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.
(注意:这显示了复制粘贴实际代码的真正好处,因为问题出在上面问题中粘贴的代码中)