【发布时间】:2013-02-26 15:25:57
【问题描述】:
我想逐行读取文件。 BufferedReader 比 RandomAccessFile 或 BufferedInputStream 快得多。 但问题是我不知道我读了多少字节。 如何知道读取的字节数(偏移量)? 我试过了。
String buffer;
int offset = 0;
while ((buffer = br.readLine()) != null)
offset += buffer.getBytes().length + 1; // 1 is for line separator
如果文件很小,我会工作。 但是,当文件变大时,偏移量会小于实际值。 我怎样才能得到抵消?
【问题讨论】:
-
你想要完成什么更大的任务?由于内部缓冲区(和编码,以及不同的行尾),这从根本上来说很棘手。
-
我想获取行首的偏移量。因此,我稍后使用 RandomAccessFile 使用该偏移量来读取文件的某些部分。
-
您假设只有一个行分隔符字节,例如\n。你能假设吗?
-
其实我用的是line.separator而不是1。