在不创建文件的情况下检查文件是否存在

2022-09-01 16:27:37

如果我这样做:

File f = new File("c:\\text.txt");

if (f.exists()) {
    System.out.println("File exists");
} else {
    System.out.println("File not found!");
}

然后创建文件并始终返回“文件存在”。是否可以在不创建文件的情况下检查文件是否存在?

编辑:

我忘了提到它在for循环中。所以这是真实的东西:

for (int i = 0; i < 10; i++) {
    File file = new File("c:\\text" + i + ".txt");
    System.out.println("New file created: " + file.getPath());
}

答案 1

实例化 时,您不是在磁盘上创建任何内容,而只是构建一个对象,您可以在其上调用一些方法,例如 .Fileexists()

这很好,很便宜,不要试图避免这种实例化。

该实例只有两个字段:File

private String path;
private transient int prefixLength;

这里是构造函数:

public File(String pathname) {
    if (pathname == null) {
        throw new NullPointerException();
    }
    this.path = fs.normalize(pathname);
    this.prefixLength = fs.prefixLength(this.path);
}

如您所见,实例只是路径的封装。创建它以便调用是正确的方法。不要试图优化它。Fileexists()


答案 2

Java 7开始,您可以使用java.nio.file.Files.exists

Path p = Paths.get("C:\\Users\\first.last");
boolean exists = Files.exists(p);
boolean notExists = Files.notExists(p);

if (exists) {
    System.out.println("File exists!");
} else if (notExists) {
    System.out.println("File doesn't exist!");
} else {
    System.out.println("File's status is unknown!");
}

Oracle 教程中,您可以找到有关此内容的一些详细信息:

类中的方法具有语法,这意味着它们在实例上运行。但最终您必须访问文件系统以验证特定是否存在。您可以使用 和 方法执行此操作。请注意,这不等效于 。测试文件是否存在时,可能有三种结果:PathPathPathexists(Path, LinkOption...)notExists(Path, LinkOption...)!Files.exists(path)Files.notExists(path)

  • 验证该文件是否存在。
  • 验证该文件不存在。
  • 文件的状态未知。当程序无权访问该文件时,可能会发生此结果。

如果同时返回 和 ,则无法验证文件是否存在。existsnotExistsfalse