在动态更新时在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文件中的输入值变量