File.isFile()返回不正确的结果?

时间:2018-08-01 06:50:34

标签: java file

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,操作系统是win10

如何理解这一点?

1 个答案:

答案 0 :(得分:11)

"‪D:\\a.log"方法内的字符串main有9个字符,isFile方法中的字符串有8个字符。

main方法中的一个以不可见的Unicode字符U + 202A(“从左向右嵌入”)开头。

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

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