JAVA坑之读取文件
1.发生情景
File file = new File("C:/test.txt");
C:/test.txt文件路径正确,但始终无法获得文件
2.原因
C:/test.txt含有特殊不可见字符: \u202a
windows下文件信息->安全标签->复制文件完整路径可能会复制该特殊字符
3.解决
手动输入字符串可避免输入特殊字符
或者排除这个特殊字符
String str ="C:/test.txt";
if(str.contains("\u202a")){
str = str.replace("\u202a", "");
}
4.反思
这个问题花了2h左右排查原因
解决顺序
手动输入可以,复制粘贴就不行
表面看起来两个字符串一模一样,真是出了鬼了
通过获得string.getBytes获得bytes数组,查看发现粘贴时,多了3个btye:-30,-128,-86
首先想到的是utf-8 BOM,是不是黏贴时,复制了BOM?
查询资料,BOM 的byte数组为 -17,-69,-86不是
开始想到是特殊字符了
通过键盘光标复制特殊字符,在转换工具显示为 /u202a,搜索该字符查明原因顺利解决