问题复现
最近在为工作的事想写一个工具类,避免很多重复无聊的工作,那么问题也就随之而来了。
ˋˋˋ
-1
2
ˋˋˋ
读取文件的时候总是会在第一行打印出一个 - ,很奇怪的东西啊,让我顿时间愣住了。
遂Google 一下,人生烦恼全无。
问题解决
之前待读取的文件是以UTF-8+BOM(Byte Order Mask)的格式,在使用该文件时,会在开头使用“EF BB BF”标注文件是用来UTF-8 的编码格式。
所以问题就出来了,会出现上面读取的问题就是因为对开头三个字节的读取导致的。
那现在要解决这个问题,只需要将待读取文件重新使用UTF-8编码格式保存,问题即刻解决。
Code
ˋˋˋjava
BufferReader reader = new BufferReader(new FileReader(“filepath”));
String line;
while ((line = reader.readLine()) != null) {
builder.append(str);
}
ˋˋˋ
读取文件的代码只展示了一部分,这跟平时常用的没什么很大的区别。
总结
事后我又去查了一下这个问题,发现这是JDK 1.4 版本的一个bug ,从记录的内容来看,这个bug 没有修复,最后在官方的解释中,由于BOM 应该由程序识别,而不是JDK 去识别,最后这个bug 也就没有解决而关闭了。
详细的解决方法可以查看一下下面的链接:
http://akini.mbnet.fi/java/unicodereader/
个人备注
此博客内容均为作者学习所做笔记,侵删!
若转作其他用途,请注明来源!