File 객체를 사용하여 파일의 디렉토리를 어떻게 얻습니까?


110

코드를 고려하십시오.

File file = new File("c:\\temp\\java\\testfile");

testfile파일이며 존재하거나 존재하지 않을 수 있습니다. 객체를 c:\\temp\\java\\사용하여 디렉토리를 얻고 싶습니다 File. 어떻게해야합니까?

답변:


170

두 경우 모두 원하는 것을 제공하기를 기대합니다 file.getParent()(또는 file.getParentFile()).

원래이 있는지 여부를 찾으려면 또한, File 하지 존재를하고 있습니다 다음, 디렉토리 exists()isDirectory()당신은 후 무슨이야.


9
경우에 따라 null을 반환 할 수 있으므로 file.getParent ()를 신중하게 사용하십시오.
geschema

주소 아래 @geschema Ponaguynik의 대답이
4myle


14

다음과 같이하면 :

File file = new File("test.txt");
String parent = file.getParent();

parent null이됩니다.

따라서이 파일의 디렉토리를 얻으려면 다음을 수행하십시오.

parent = file.getAbsoluteFile().getParent();

8

File API File.getParent 또는 File.getParentFile 은 파일의 디렉토리를 반환해야합니다.

코드는 다음과 같아야합니다.

    File file = new File("c:\\temp\\java\\testfile");
    if(!file.exists()){
        file = file.getParentFile();
    }

File.isDirectory API를 사용하여 상위 파일이 디렉토리인지 추가로 확인할 수 있습니다.

if(file.isDirectory()){
    System.out.println("file is directory ");
}

4
File directory = new File("Enter any 
                directory name or file name");
boolean isDirectory = directory.isDirectory();
if (isDirectory) {
  // It returns true if directory is a directory.
  System.out.println("the name you have entered 
         is a directory  : "  +    directory);  
  //It returns the absolutepath of a directory.
  System.out.println("the path is "  + 
              directory.getAbsolutePath());
} else {
  // It returns false if directory is a file.
  System.out.println("the name you have
   entered is a file  : " +   directory);
  //It returns the absolute path of a file.
  System.out.println("the path is "  +  
            file.getParent());
}

1
질문에 대답하지 않습니다. 이것은 파일에 대해 작동하지 않습니다.
toni07 2015-04-06

code최종 파일 파일 = new File ( "C : /dev/changeofseasons.mid"); System.out.println ( "파일이 있습니까?"+ file.exists ()); System.out.println ( "파일 디렉토리 :"+ file.getAbsolutePath ()); 좋아요, 절름발이 들여 쓰기에 대해 죄송합니다. 주석에서 코드 형식을 지정할 수 없다고 생각합니다. 그래도 코드가 분명히 작동하지 않습니다.
toni07 2015-04-06

감사합니다. 수정 됨 <! --->
Jigar Joshi

3
File filePath=new File("your_file_path");
String dir="";
if (filePath.isDirectory())
{
    dir=filePath.getAbsolutePath();
}
else
{
    dir=filePath.getAbsolutePath().replaceAll(filePath.getName(), "");
}

설명이 필요합니다.
Halvor Holsten Strand

1
Stack Overflow에 오신 것을 환영합니다! 일반적으로 코드 답변에는 약간의 설명이 필요합니다 . 이 메타 Stackoverflow 게시물을 참조하세요 . 게시 한 답변을 사용하여 일반적인 사례를 제공하려고하며 OP의 실제 게시물과 어떻게 관련되는지 설명해야 할 수 있습니다. 더 진지하게-당신은 그것이 어떻게 작용할지 고려하고 싶을 것입니다 your_file_path = "C:\\testfiles\\temp\\testfile";-나는 그것이 당신이 바라는 것을 줄 것이라고 생각하지 않습니다.
J Richard Snape 2015 년

정답이어야합니다. 파일의 전체 경로가 표시됩니다.
Magno C

0

이것을 사용할 수 있습니다

 File dir=new File(TestMain.class.getClassLoader().getResource("filename").getPath());

0
String parentPath = f.getPath().substring(0, f.getPath().length() - f.getName().length()); 

이것은 내 해결책이 될 것입니다.


-1

절대 파일 위치를 얻는 데 더 유용하다는 것을 알았습니다.

File file = new File("\\TestHello\\test.txt");
System.out.println(file.getAbsoluteFile());
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.