在Java中(相当于Perl的-e $filename)打开文件读取之前,如何检查文件是否存在?

SO中唯一类似的问题涉及写入文件,因此使用FileWriter来回答,这显然不适用于这里。

如果可能的话,我更喜欢一个真正的API调用返回true/false,而不是一些“调用API打开一个文件,并在它抛出一个异常时捕获你检查文本中的‘无文件’”,但我可以接受后者。


当前回答

第一次点击“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 "));
    }
}

其他回答

通过在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教程。

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

You must use the file class , create a file instance with the path of the file you want to check if existent . After that you must make sure that it is a file and not a directory . Afterwards you can call exist method on that file object referancing your file . Be aware that , file class in java is not representing a file . It actually represents a directory path or a file path , and the abstract path it represents does not have to exist physically on your computer . It is just a representation , that`s why , you can enter a path of a file as an argument while creating file object , and then check if that folder in that path does really exist , with the exists() method .

你可以使用以下方法:

对我来说,Sean A.O. Harney的回答和Cort3z的评论似乎是最好的解决方案。

使用以下代码段:

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

希望这能帮助到一些人。