使用与此处相同的项目和文本文件:Java.NullPointerException null (again)程序正在输出数据,但
。让你进入图片:
这个程序是一个电话目录,忽略第一个“代码”块,查看该链接上的第二个“代码”块,即带有条目的文本文件。程序按原样输出它们,但它只在从文本文件读取的条目开头给出

。
有关如何删除它的任何帮助?我正在使用带有文件阅读器的缓冲读卡器。谢谢你提前。
答案 0 :(得分:5)
文本文件中的读取是否使用带BOM的UTF-8?它看起来像BOM标志:“” http://en.wikipedia.org/wiki/Byte_order_mark
你运行Windows吗? Notepad ++可以转换。如果使用linux或VI(M),你可以使用“:set nobomb”
答案 1 :(得分:1)
我认为您的输入文件是以UTF-8 with BOM编码的。
您可以在没有BOM的情况下保存输入文件,也可以用Java处理。
人们可能想要做的事情是使用具有适当编码的InputStreamReader。可悲的是,这是不可能的。问题是,Java assumes that UTF-8编码的文件没有BOM,所以你必须手动处理这种情况。
快速破解是检查文件的前三个字节是否为0xEF, 0xBB, 0xBF
,如果是,则忽略它们。
有关更复杂的示例,请查看UnicodeBOMInputStream
类in this answer。