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