我检查了甚至打印出了路径,路径存在,但找不到该文件。我在本地尝试了代码并且它有效,但我不确定原因是什么(在 Java 中)。
filepath = "C:/FolderA/test.html";
File f1 = new File(filepath)
if (!f1.exists()) {
System.out.println("File does not exist");
}
最佳答案
对于您所看到的情况,我可以想到三种可能的解释:
这可能是一条损坏的捷径。
exists()
的 javadoc 说:Tests whether the file or directory denoted by this abstract pathname exists.
如果路径名是损坏的符号链接(symbolic link)的名称,则该路径表示的文件或目录不存在。 (如果您尝试用 Java 打开它,您将收到 IOException。)
应用程序没有足够的权限来查看该文件。例如,如果
FolderA
的权限使得程序无法读取它,则exists()
必须返回false
整个路径。不知何故,您已经设法将一个时髦的字符放入文件系统中存储的文件路径名中,或者程序中的 Java 字符串文字中。不同西方字母表中的某些 Unicode 字符看起来类似于拉丁字母(a-z、A-Z)...但事实并非如此。这些可能很难发现,具体取决于用于显示相应字符的字形。
前两个理论可以通过检查所涉及的文件和目录来测试。
第三个需要使用某种工具检查源代码和目录列表,这些工具可以将相应的字符呈现为十六进制。
如果您尝试从 Java 和(例如)记事本中打开路径名(用于读取),也值得看看会发生什么。
关于java - 为什么 file.exists() 失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16693197/