java - 为什么 file.exists() 失败?

标签 java

我检查了甚至打印出了路径,路径存在,但找不到该文件。我在本地尝试了代码并且它有效,但我不确定原因是什么(在 Java 中)。

filepath = "C:/FolderA/test.html";
File f1 = new File(filepath)
if (!f1.exists()) {
    System.out.println("File does not exist");
}

最佳答案

对于您所看到的情况,我可以想到三种可能的解释:

  1. 这可能是一条损坏的捷径。 exists() 的 javadoc 说:

    Tests whether the file or directory denoted by this abstract pathname exists.

    如果路径名是损坏的符号链接(symbolic link)的名称,则该路径表示的文件或目录不存在。 (如果您尝试用 Java 打开它,您将收到 IOException。)

  2. 应用程序没有足够的权限来查看该文件。例如,如果 FolderA 的权限使得程序无法读取它,则 exists() 必须返回 false整个路径。

  3. 不知何故,您已经设法将一个时髦的字符放入文件系统中存储的文件路径名中,或者程序中的 Java 字符串文字中。不同西方字母表中的某些 Unicode 字符看起来类似于拉丁字母(a-z、A-Z)...但事实并非如此。这些可能很难发现,具体取决于用于显示相应字符的字形。

<小时/>

前两个理论可以通过检查所涉及的文件和目录来测试。

第三个需要使用某种工具检查源代码和目录列表,这些工具可以将相应的字符呈现为十六进制。

如果您尝试从 Java 和(例如)记事本中打开路径名(用于读取),也值得看看会发生什么。

关于java - 为什么 file.exists() 失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16693197/

相关文章:

接口(interface)中的 Java 保护方法?

java - Spring官方文档中的问题

java - 简单的数学题?

Java JFrame 背景颜色不起作用

java - 使用 Camel Netty4 发布请求响应 - HTTP 操作调用失败

java - Selenium WebDriver Java 使用动态 ID 定位元素

java - ProgressBar 直到 JSONParser 返回数据

java - Java 中奇怪的 printf() 行为

java - 打开移位 : maven compiler error : Base64 can not find the symbol

java - 寻找适用于 Android 的加密/解密 AES 示例