最优雅的方式来读取文件并在行上作为字节操作

时间:2011-10-27 04:35:23

标签: java

我有一个数据库转储文件,我需要原始操作。我需要读取文件,逐行操作,但我不能将整个文件放在内存中(理论上它们可以是10gb +)。

我希望能够在我去的时候单独阅读并操作每一行,直到文件结束。它必须是奇怪的字符友好(可以有各种各样的字节)。

2 个答案:

答案 0 :(得分:2)

您可以调整旧的nio示例grep并删除模式匹配,如果您不需要它。

答案 1 :(得分:0)

如果换行不感兴趣,可以使用BufferedReader#readLine()并将字符串转换回字节[]

另一种方法是使用byte []作为缓冲区(必须足够大的一行)并使用InputStream #read(byte [])用字节填充它。然后,您可以在缓冲区中搜索换行符并使用部分缓冲区。一旦找不到换行符,请通过System#arraycopy()将数据移到左侧,并通过InputStream#read(byte [],int,int)用新数据填充其余数据,然后继续。

但要小心!取决于编码(例如,unicode),一个字节不必是一个字符