我正在使用 BufferedReader 逐行读取字节流(UTF-8 文本)。出于特定原因,我需要知道该行在字节流中的确切位置开始。
问题:我不能使用我插入到 BufferedReader 的 InputStream 的位置——以及——阅读器一次缓冲并读取超过一行。
我的问题:如何确定每行读取的精确字节偏移量?
一种明显(但不正确)的解决方案是使用 (line + "\n").getBytes("UTF-8").length。这种方法有两个问题:1)只是为了计算字节数,将字符串转换回字节是相当大的开销;2)换行符并不总是用“\n”标记——它也可能是“\ r\n”等。
有没有其他解决方案?
编辑:到目前为止,我看到的每一个类似于 LineReader 的类似乎都被缓冲了。有谁知道类似 LineReader 的无缓冲类?