java - java如何检查文件是否存在?

  显示原文与译文双语对照的内容

如何检查文件是否存在,然后再打开它以读取 Java? ( 相当于 -e $filename的) 。

使用FileWriter这显然不能适用here,的唯一最高兴的是在太要处理写入该文件并因此 answered. 相似

如果可能的话,我宁愿真正的API调用返回真/假,而不是一些"调用API来打开一个文件,当它抛出你检查的异常时捕获'文件'在文本中",但我可以使用后者。

时间:

我建议使用 isFile() 而不是 exists() 。 大多数时候,你要检查路径是否指向一个文件,不仅是它存在。 记住,如果你的路径指向一个目录,exists() 将会 return true 。


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

new File("C:/").exists() 将 return true,但不允许你打开并读取它作为文件。

通过在javase中使用 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 return false,则无法验证文件的存在。 ( 可能没有访问这里路径的权限)

你可以检查路径是目录还是常规文件。


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

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

请检查这里 Java SE 7教程


File f = new File(filePathString); 

这将不会创建物理文件。 将创建类文件的对象。 要创建一个文件,你必须显式创建它:

 
f.createNewFile();

 

所以 f.exists() 可以用来检查这样一个文件是否存在。

在谷歌上首次点击"java文件存在":


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"));
 }
}

不要。只要捕获 FileNotFoundException. 文件系统就必须测试文件是否存在。 执行这两个操作没有任何意义,也没有几个理由,比如:

  • 加倍代码
  • 时序窗口问题,凭借这个文件可能存在测试但不是当你打开时,或者反之亦然。 。
  • 因为这个问题的存在,你可能会做错误的测试并得到错误的答案。

不要试图 second-guess 。 它知道,并且不要试图预测未来。 一般来说,测试资源是否可用的最佳方法是使用它。

对我来说,由 Sean A.O. Harney所接受的答案和Cort3z的评论是最好的解决方案。

使用了以下代码段:


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

希望这可以帮助某人。

...