在动态更新时在java中增量访问文件?

Posted

技术标签:

【中文标题】在动态更新时在java中增量访问文件?【英文标题】:Accessing a file incrementally in java while it is being dynamically updated? 【发布时间】:2012-08-03 21:09:35 【问题描述】:

我想在其他进程修改/写入文件时在 java 中增量读取文件。因此,假设进程“A”正在写入/记录文件“X”,而另一个进程“B”想要增量读取文件“X”,例如每 1 秒(甚至连续)以查找特定模式。在java中执行此操作的最佳方法是什么?我知道我可以使用 RandomAccessFile 的 'seek' 方法,但这会干扰文件的写入吗?有没有更好的方法来做到这一点?

【问题讨论】:

【参考方案1】:

轮询文件修改的数据。打开它进行读取可以防止其他程序同时写入该文件。

【讨论】:

此时我“grep”了我正在搜索的模式的文件,因此它不会干扰在文件上写入的其他进程。但在这样做时,我每次都必须阅读整个文件。【参考方案2】:

如果您能够使用 Java 7,则可以利用 WatchService ... 但它不能解决必须解析整个文件的问题。

我唯一能想到的就是维护某种“标记”,以指示您最后到达的位置。下次你来阅读文件时,你可以跳到这里并从那里阅读(完成后更新标记)

【讨论】:

以上是关于在动态更新时在java中增量访问文件?的主要内容,如果未能解决你的问题,请参考以下文章

Android增量更新-差分文件(Windows-part2)-dll动态库和jar包

如何动态更改访问图表的行源

如何使用AngularJS动态更新.less文件中的输入值变量

如何在不重新加载窗口的情况下单击按钮时在 JSP 中进行更新查询?

关于java动态加载jar的问题?

基于NACOS和JAVA反射机制动态更新JAVA静态常量非@Value注解