File.isFile()返回错误的结果?

win*_*lex 4 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();
  }
}
Run Code Online (Sandbox Code Playgroud)

预期的结果是:

true
true
Run Code Online (Sandbox Code Playgroud)

但实际上结果是:

false
true
Run Code Online (Sandbox Code Playgroud)

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

怎么理解这个?

Erw*_*idt 11

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

main方法内部的一个以隐形unicode字符U + 202A("LEFT-TO-RIGHT EMBEDDING")开头.

用里面main的字符串替换里面的字符串isFile,或者删除字符串中的第一个不可见字符main.

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