[java] Java에 파일이 있는지 어떻게 확인합니까?

Java 에서 읽기 위해 파일을 열기 전에 파일이 존재하는지 어떻게 확인할 수 있습니까 ( Perl 과 동일 -e $filename)?

SO에 대한 유일한 비슷한 질문 은 파일 작성을 다루므로 FileWriter여기에는 해당되지 않습니다.

가능한 경우 “파일을 열고 텍스트에서 ‘파일 없음’을 확인하는 예외가 발생하면 catch하는 API 호출과 달리 true / false를 반환 하는 실제 API 호출을 선호 하지만 후자의.



답변

사용 java.io.File:

File f = new File(filePathString);
if(f.exists() && !f.isDirectory()) { 
    // do something
}


답변

isFile()대신에 사용 하는 것이 좋습니다 exists(). 대부분의 경우 경로가 파일이 아닌 파일을 가리키는 지 확인하려고합니다. 그 기억 exists()의 디렉토리 경로 점의 경우 true를 돌려줍니다.

new File("path/to/file.txt").isFile();

new File("C:/").exists() true를 반환하지만 파일로 열고 읽을 수는 없습니다.


답변

Java SE 7에서 nio를 사용하여

import java.nio.file.*;

Path path = Paths.get(filePathString);

if (Files.exists(path)) {
  // file exist
}

if (Files.notExists(path)) {
  // file is not exist
}

두 경우 existsnotExists반환 허위, 파일의 존재는 확인할 수 없습니다. (이 경로에 대한 액세스 권한이 없을 수 있음)

path디렉토리 또는 일반 파일인지 확인할 수 있습니다 .

if (Files.isDirectory(path)) {
  // path is directory
}

if (Files.isRegularFile(path)) {
  // path is regular file
}

Java SE 7 자습서를 확인하십시오 .


답변

자바 8 :

if(Files.exists(Paths.get(filePathString))) { 
    // do something
}


답변

File f = new File(filePathString); 

실제 파일은 생성되지 않습니다. File 클래스의 객체를 만듭니다. 실제로 파일을 작성하려면 명시 적으로 파일을 작성해야합니다.

f.createNewFile();

따라서 f.exists()이러한 파일이 존재하는지 여부를 확인하는 데 사용할 수 있습니다.


답변

f.isFile() && f.canRead()


답변

이를 달성하기위한 여러 가지 방법이 있습니다.

  1. 단지 존재의 경우. 파일 또는 디렉토리 일 수 있습니다.

    new File("/path/to/file").exists();
  2. 파일 확인

    File f = new File("/path/to/file"); 
      if(f.exists() && f.isFile()) {}
    
  3. 디렉토리를 확인하십시오.

    File f = new File("/path/to/file"); 
      if(f.exists() && f.isDirectory()) {}
    
  4. 자바 7 방식.

    Path path = Paths.get("/path/to/file");
    Files.exists(path)  // Existence 
    Files.isDirectory(path)  // is Directory
    Files.isRegularFile(path)  // Regular file 
    Files.isSymbolicLink(path)  // Symbolic Link