通过JAVA,我正在通过InputStream
和BufferedReader
定期读取变化的文本文件。
例如,
[a minute ago]
test.txt = abcde
[now]
test.txt = cdefg
(a,b be deleted / f,g add)
我读取了过去的所有文件,并完成了将它们保存到'e'的操作 当我定期重新启动该程序时, 我想从'e'之后读取并保存当前文件,以避免重复。 (我只想读取和存储f.g。)
首先,我尝试过的唯一方法 =从当前文件中搜索过去文件中的最后一个“ e” 并跳到“ e” 然后阅读并保存它。 当然,它可以正常工作。
但是,示例是abcdefg
。按字母顺序排列,不重复。假设它经常重复
例如,
test.txt = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
如果搜索“ a”,您将发现我上一个文件中上次读取的“ a”是什么。冗余值太多。 因此,您尝试过的方法不可用。
答案 0 :(得分:0)
从根本上来说,这个问题是不可能解决的。
想象一下文件是第一个
abcdd
现在是
ddefg
无法确定两个实例中第一个d
是否相同。可能在某个时候文件看起来像这样:
cdddef
因此可靠地做您想做的事情的唯一方法是为您可以搜索的每个条目引入唯一的标记。
但是您的问题可能会更糟:无法保证在读取文件时(在大多数操作系统上)文件保持不变。您可能必须锁定它才能进行并发修改。