This question already has answers here:
both File.isFile() and File.isDirectory() is returning false

(6个答案)


2年前关闭。



public class Test {
  public static void isFile() {
    System.out.println(new File("D:\\a.log").isFile());
  }

  public static void main(String[] args) {
    System.out.println(new File("‪D:\\a.log").isFile());
    isFile();
  }
}

预期结果是:
true
true

但实际上结果是:
false
true

文件D:\a.log实际上存在并且路径正确,jdk版本是1.8.0_11,而os是win10

如何理解这一点?

最佳答案

"‪D:\\a.log"方法中的字符串main具有9个字符,而isFile方法中的字符串具有8个字符。
main方法中的一个以不可见的Unicode字符U + 202A(“从左向右嵌入”)开头。

main内的字符串替换isFile内的字符串,或从main的字符串中删除第一个不可见字符。

(注意:这显示了复制粘贴实际代码的真正好处,因为问题出在上面问题中粘贴的代码中)

09-09 22:16