Java_读取文件中出现“-”

问题复现

最近在为工作的事想写一个工具类,避免很多重复无聊的工作,那么问题也就随之而来了。

ˋˋˋ
-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/


个人备注

此博客内容均为作者学习所做笔记,侵删!
若转作其他用途,请注明来源!