Java에 파일이 있는지 확인하려면 어떻게 해야 하나요?
Java에서 읽기 위해 파일을 열기 전에 파일이 존재하는지 확인하는 방법(Perl과 동등)
-e $filename
)?
SO에 관한 유일한 유사한 질문은 파일 작성에 관한 것이며, 따라서 다음과 같이 답변되었습니다.FileWriter
여기에는 해당되지 않습니다.
가능하다면 "Call API to open a file and catch when exception that you checked to no file"이라는 텍스트가 아닌 true/false를 반환하는 실제 API 호출을 선호하지만, 저는 후자를 감수할 수 있습니다.
사용방법:
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
}
둘 다라면exists
그리고.notExists
false를 반환합니다.파일의 존재를 확인할 수 없습니다.(이 경로에 대한 접근권이 없을 수 있음)
확인하실 수 있습니다.path
디렉토리 또는 일반 파일입니다.
if (Files.isDirectory(path)) {
// path is directory
}
if (Files.isRegularFile(path)) {
// path is regular file
}
이 Java SE 7 튜토리얼을 확인해 주세요.
Java 8 사용:
if(Files.exists(Paths.get(filePathString))) {
// do something
}
File f = new File(filePathString);
이렇게 해도 실제 파일은 생성되지 않습니다.파일 클래스의 개체를 만듭니다.파일을 물리적으로 작성하려면 명시적으로 작성해야 합니다.
f.createNewFile();
그렇게f.exists()
를 사용하여 이러한 파일이 존재하는지 여부를 확인할 수 있습니다.
f.isFile() && f.canRead()
이를 실현하는 방법은 여러 가지가 있습니다.
단지 존재하기 위해서.파일 또는 디렉토리일 수 있습니다.
new File("/path/to/file").exists();
파일 확인
File f = new File("/path/to/file"); if(f.exists() && f.isFile()) {}
디렉토리를 확인합니다.
File f = new File("/path/to/file"); if(f.exists() && f.isDirectory()) {}
자바 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
하지 마 그냥 잡으면 돼FileNotFoundException.
파일 시스템은 파일이 존재하는지 여부를 테스트해야 합니다.이 모든 작업을 두 번 수행하는 것은 의미가 없으며, 다음과 같은 몇 가지 이유를 들 수 있습니다.
- 암호를 이중으로 하다
- 테스트 시에는 파일이 존재하지만 열 때는 존재하지 않거나 그 반대인 타이밍 윈도우 문제
- 이 문제의 존재에서 알 수 있듯이 시험을 잘못 치르고 틀린 답을 얻을 수 있다는 사실.
시스템을 의심하려고 하지 마세요.알고 있어요.그리고 미래를 예측하려고 하지 마세요.일반적으로 리소스를 사용할 수 있는지 여부를 테스트하는 가장 좋은 방법은 리소스를 사용해 보는 것입니다.
다음을 사용할 수 있습니다.File.exists()
구글에서 "filename file exists"에 대한 첫 번째 히트:
import java.io.*;
public class FileTest {
public static void main(String args[]) {
File f = new File(args[0]);
System.out.println(f + (f.exists()? " is found " : " is missing "));
}
}
저는 션 A.O.가 인정해준 답변의 조합입니다.Harney와 그에 따른 Cort3z의 코멘트가 최선의 해결책인 것 같습니다.
다음 스니펫 사용:
File f = new File(filePathString);
if(f.exists() && f.isFile()) {
//do something ...
}
이게 도움이 됐으면 좋겠어요.
이 상황에서 내가 좀 늦은 거 알아.단, Java 7 이상부터 유효한 답변입니다.
다음 스니펫
if(Files.isRegularFile(Paths.get(pathToFile))) {
// do something
}
방법이기 이다. 왜냐하면 방법은isRegularFile
false
파일이 존재하지 않는 경우. 때문에 굳이 는 없습니다.Files.exists(...)
.
기타 파라미터는 링크 처리 방법을 나타내는 옵션입니다.기본적으로는 심볼릭링크가 계속됩니다.
Commons File Utils https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/FileUtils.html 에는 파일 관리를 위한 추가 방법이 있으며 JDK보다 더 나은 경우가 많습니다.
좋은 코딩 관행과 모든 사례를 포함하는 간단한 예:
private static void fetchIndexSafely(String url) throws FileAlreadyExistsException {
File f = new File(Constants.RFC_INDEX_LOCAL_NAME);
if (f.exists()) {
throw new FileAlreadyExistsException(f.getAbsolutePath());
} else {
try {
URL u = new URL(url);
FileUtils.copyURLToFile(u, f);
} catch (MalformedURLException ex) {
Logger.getLogger(RfcFetcher.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(RfcFetcher.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
레퍼런스 및 기타 예:
https://zgrepcode.com/examples/java/java/nio/file/filealreadyexistsexception-implementations
문자열과 함께 파일 생성자를 사용하지 마십시오.
이거 안 될 수도 있어!
URI "URI"를 합니다.
File f = new File(new URI("file:///"+filePathString.replace('\\', '/')));
if(f.exists() && !f.isDirectory()) {
// to do
}
이렇게 하면 돼
import java.nio.file.Paths;
String file = "myfile.sss";
if(Paths.get(file).toFile().isFile()){
//...do somethinh
}
이러한 방법을 설계하는 데는 특별한 목적이 있습니다.파일의 존재 여부를 확인하기 위해 다른 사람을 사용한다고 말할 수 없습니다.
- is File():이 추상 경로 이름으로 표시된 파일이 일반 파일인지 테스트합니다.
- exists():이 추상 경로 이름으로 표시된 파일 또는 디렉터리가 있는지 테스트합니다.docs.oracle.com
언급URL : https://stackoverflow.com/questions/1816673/how-do-i-check-if-a-file-exists-in-java
'source' 카테고리의 다른 글
Python 버전 번호는 어떻게 비교하나요? (0) | 2022.11.05 |
---|---|
groupBy에서 발생한 횟수를 어떻게 셀 수 있습니까? (0) | 2022.10.27 |
바이너리 트리의 밸런스 여부를 확인하는 방법 (0) | 2022.10.27 |
mysql의 SERIAL과 AUTO_INCREMENT의 차이점은 무엇입니까? (0) | 2022.10.27 |
MySQL: 가져올 때 오류 무시? (0) | 2022.10.27 |