Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在读取更改的文件时进行偏移_Java_Ftp_Inputstream_Bufferedreader - Fatal编程技术网

Java 如何在读取更改的文件时进行偏移

Java 如何在读取更改的文件时进行偏移,java,ftp,inputstream,bufferedreader,Java,Ftp,Inputstream,Bufferedreader,通过JAVA,我通过InputStream和BufferedReader定期读取不断变化的文本文件 比如说, [a minute ago] test.txt = abcde [now] test.txt = cdefg (a,b be deleted / f,g add) test.txt = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 我阅读了过去的所有文件,并将它们保存到“e” 当我定期重新启动程序时, 我想在“e”之后读取并保存当前文件

通过JAVA,我通过
InputStream
BufferedReader
定期读取不断变化的文本文件

比如说,

[a minute ago]
test.txt = abcde

[now]
test.txt = cdefg
(a,b be deleted / f,g add)
test.txt = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
我阅读了过去的所有文件,并将它们保存到“e” 当我定期重新启动程序时, 我想在“e”之后读取并保存当前文件,以避免重复。 (我只想阅读和存储f.g.)

首先,我试过的唯一方法 =从当前文件中搜索过去文件中的最后一个“e” 然后跳到“e” 然后阅读并保存它。 当然,它没有任何问题

但是,呃,这个例子是
abcdefg
。按字母顺序排列,无重复。假设它经常被复制 比如说,

[a minute ago]
test.txt = abcde

[now]
test.txt = cdefg
(a,b be deleted / f,g add)
test.txt = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
如果您搜索“a”,您将发现我上次在过去的文件中读取的“a”是什么样子的。冗余值太多。
因此,您尝试的方法不可用。

这个问题根本无法解决

假设文件是第一个

abcdd
现在是了

ddefg
无法判断两种情况下的第一个
d
是否相同。可能在某个时间点,该文件如下所示:

cdddef
因此,要可靠地完成您想做的事情,唯一的方法就是为您可以搜索的每个条目引入唯一的标记


但您的问题可能更糟:无法保证文件在读取时保持不变(在大多数操作系统上)。您可能必须将其锁定以防止并发修改。

如果没有代码,您的问题是不清楚的。避免重复意味着什么?为什么不替换这个值呢?我一分钟前已经读完了“e”。现在,它表示在“e”之后读取而不读取“e”。因为a,b,c,d,e是重叠的。