如果我们假设我们有文件1,它具有以下背景。
我读了一本书。
现在我想在文件中附加一个句子1.我的问题是如何找到给定句子将在file1中写入的确切地址。我需要保存这个地址才能直接访问该行,而不是读取文件1的所有行来查找这个特定的句子。
答案 0 :(得分:1)
文件中的某个位置(例如,行的开头)不是"地址"。它是从文件开头的偏移量(以字节为单位)。
因此,如果您要将一行添加到文件中,那么该行开头的字节偏移量将是之前执行追加的文件结尾的字节偏移量。这与文件的长度(以字节为单位)相同。你可以通过调用File.length()
来解决这个问题(模拟竞争条件的问题......)。
现在,如果要附加大量行,请反复询问文件效率低的时间。然后有一个事实是,如果缓冲输出到文件,则只有在刷新缓冲区内容时才会更新文件大小。所以你也需要冲洗,效率更低。
如果您尝试重复查找行位置,最好通过计算写入的字节来自己跟踪文件大小/位置。最好的方法取决于您正在编写的数据以及如何将其写入文件。