协慌网

登录 贡献 社区

Java 如何检查某个文件是否存在?

1
yanxingangsun
贡献值 0
贡献次数 1

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

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

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

答案

使用java.io.File

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
}

如果两者都存在且 notExists 返回 false,则无法验证文件是否存在。 (也许没有访问权限)

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

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

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

请查看此Java SE 7 教程