我希望逐行读取和写入一些文件。
我的第一个想法是使用 BufferedReader
和 BufferedWriter
但我的问题是我需要知道我在文件中走了多远。
在阅读时,我想知道我对文件的处理进行了多远,并且希望它是准确的,因此在每次 readLine()
之后,我期望位置更新,由于涉及缓冲区,这使情况变得复杂。
同样适用于写作,我需要在写一行之前和之后准确地获取位置。我猜这并不像我的理解那么困难,因为 BufferedWriter 在每个换行符之后都会刷新,所以考虑到我正在写行,我可以直接写入 channel 。
在我重新发明轮子或使用一些狡猾的反射之前,JDK 中有什么东西可以帮助我吗?
编辑:为了弄清楚事情,我正在寻找字节位置。
最佳答案
根据您的问题,“我处理文件进行了多远”的含义并不完全清楚。这是否意味着行号或字节位置?
如果它意味着行号,那么实际上有两个选择:
A) 手动跟踪行号。不应该那么难。只需为每一行增加一个计数器即可。
B) 使用java.io.LineNumberReader正如@Jesper建议的
如果它意味着字节位置,则将字节位置计数器增加每行长度,并且不要忘记在字节位置中也包含换行符。
写入时,没有 LineNumberWriter,因此您需要手动跟踪计数器。应该不难。
关于java - 读取/写入文件逐行报告位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29227812/