Java如何逐行读取文件。每行与ascII和二进制混合

时间:2012-01-27 11:44:16

标签: java io binary inputstream bufferedreader

我有一个文件有多行。

对于每一行,格式为

"String A" "String B" "binary data"

我想要做的是在每行前面添加“String C”

"String C" "String A" "String B" "binary data"

现在我正在使用BufferedReader.readline(),看起来这个方法在读取二进制数据时有问题。

任何人都可以就解决这个问题给我一些建议吗?

3 个答案:

答案 0 :(得分:3)

如果您的文件中包含二进制数据,则不应使用readLine()方法,该方法假定您的行以“\ r”,“\ n”或“\ r \ n”结尾。 “二进制数据”可能偶然包含该序列并弄乱readLine()。

一般来说,不应将二进制数据与文本数据混合。

答案 1 :(得分:2)

我认为你必须自己阅读二进制缓冲区并解释你的格式,即找到文本提取字节的位置并将它们转换为字符串。

读者无法读取二进制数据。没办法。

答案 2 :(得分:2)

比“二进制数据可能包含换行符”更严重的问题显然是二进制数据甚至可能根本不包含有效的unicode代码点!因此,在任何情况下你都不应该将二进制数据解释为文本,但另一种方式就好了。

这意味着:将数据读入bytebuffer并自行解释。