如何在打开文件进行Java阅读之前检查文件是否存在? (相当于Perl的-e $filename
)。
编写文件的唯一similar question on SO处理因此使用FileWriter回答,这显然不适用于此。
如果可能的话,我更喜欢真正的API调用返回true / false,而不是某些“调用API来打开文件并在它抛出异常时捕获,你在文本中检查'无文件'”,但我可以和后者一起生活。
答案 0 :(得分:1264)
使用java.io.File
:
File f = new File(filePathString);
if(f.exists() && !f.isDirectory()) {
// do something
}
答案 1 :(得分:404)
我建议使用isFile()
代替exists()
。大多数情况下,您要检查路径是否指向文件,而不仅仅是它存在。请记住,如果您的路径指向目录,exists()
将返回true。
new File("path/to/file.txt").isFile();
new File("C:/").exists()
将返回true,但不允许您打开并将其作为文件读取。
答案 2 :(得分:129)
在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
}
如果两者都存在且notExists返回false,则无法验证文件是否存在。 (也许没有访问此路径的权利)
您可以检查路径是目录文件还是常规文件。
if (Files.isDirectory(path)) {
// path is directory
}
if (Files.isRegularFile(path)) {
// path is regular file
}
请检查此Java SE 7 tutorial。
答案 3 :(得分:40)
使用Java 8:
if(Files.exists(Paths.get(filePathString))) {
// do something
}
答案 4 :(得分:27)
File f = new File(filePathString);
这不会创建物理文件。将只创建类File的对象。要物理创建文件,您必须明确创建它:
f.createNewFile();
因此f.exists()
可用于检查此类文件是否存在。
答案 5 :(得分:24)
f.isFile() && f.canRead()
答案 6 :(得分:16)
There are multiple ways to achieve this.
In case of just for existence. It could be file or a directory.
new File("/path/to/file").exists();
Check for file
File f = new File("/path/to/file");
if(f.exists() && f.isFile()) {}
Check for Directory.
File f = new File("/path/to/file");
if(f.exists() && f.isDirectory()) {}
Java 7 way.
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
答案 7 :(得分:15)
您可以使用以下内容:File.exists()
答案 8 :(得分:14)
首先在google上找到“java 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 "));
}
}
答案 9 :(得分:9)
别。只需捕获FileNotFoundException.
文件系统必须测试文件是否仍然存在。完成所有这两次没有意义,有几个原因没有,例如:
不要试图猜测系统。它知道。并且不要试图预测未来。一般来说,测试任何资源是否可用的最佳方法就是尝试使用它。
答案 10 :(得分:8)
对我来说,Sean A.O.接受的答案的组合。 Harney和Cort3z的评论似乎是最好的解决方案。
使用以下代码段:
File f = new File(filePathString);
if(f.exists() && f.isFile()) {
//do something ...
}
希望这可以帮助某人。
答案 11 :(得分:4)
熟悉Commons FileUtils https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/FileUtils.html也值得熟悉 这有其他管理文件的方法,通常比JDK更好。
答案 12 :(得分:4)
我知道我在这个帖子中有点迟了。但是,这是我的答案,自Java 7及以后版本有效。
以下代码段
if(Files.isRegularFile(Paths.get(pathToFile))) {
// do something
}
非常令人满意,因为如果文件不存在,方法isRegularFile
会返回false
。因此,无需检查Files.exists(...)
。
请注意,其他参数是指示应如何处理链接的选项。默认情况下,遵循符号链接。
答案 13 :(得分:3)
例如,如果您有一个文件目录,并且想要检查它是否存在
File tmpDir = new File("/var/tmp");
boolean exists = tmpDir.exists();
如果文件不存在, exists
将返回false
来源:https://alvinalexander.com/java/java-file-exists-directory-exists
答案 14 :(得分:2)
具有良好编码实践并涵盖所有情况的简单示例:
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);
}
}
}
参考和更多示例,
答案 15 :(得分:1)
new File("/path/to/file").exists();
会做的伎俩
答案 16 :(得分:1)
File.exists()
检查文件是否存在,它将返回一个布尔值来指示检查操作状态;如果文件存在,则为true;如果不存在则为假。
File f = new File("c:\\test.txt");
if(f.exists()){
System.out.println("File existed");
}else{
System.out.println("File not found!");
}
答案 17 :(得分:1)
不要将File构造函数与String一起使用
这可能行不通!
而不是使用URI:
File f = new File(new URI("file:///"+filePathString.replace('\\', '/')));
if(f.exists() && !f.isDirectory()) {
// to do
}
答案 18 :(得分:1)
File
dir
String directoryPath = dir.getAbsolutePath()
boolean check = new File(new File(directoryPath), aFile.getName()).exists();
并检查check
结果
答案 19 :(得分:0)
您可以使用以下代码进行检查:
import java.io.File;
class Test{
public static void main(String[] args){
File f = new File(args[0]); //file name will be entered by user at runtime
System.out.println(f.exists()); //will print "true" if the file name given by user exists, false otherwise
if(f.exists())
{
//executable code;
}
}
}
答案 20 :(得分:0)
您可以通过这种方式实现
import java.nio.file.Paths;
String file = "myfile.sss";
if(Paths.get(file).toFile().isFile()){
//...do somethinh
}
答案 21 :(得分:0)
设计这些方法有特定的目的。我们不能说使用任何人来检查文件是否存在。
答案 22 :(得分:-4)
要检查文件是否存在,只需导入java.io. *库
File f = new File(“C:\\File Path”);
if(f.exists()){
System.out.println(“Exists”); //if file exists
}else{
System.out.println(“Doesn't exist”); //if file doesn't exist
}
来源:http://newsdivariotipo.altervista.org/java-come-controllare-se-un-file-esiste/