gpt4 book ai didi

java - 在 Java 中使用 WatchService 检测文件完成

转载 作者:行者123 更新时间:2023-11-30 08:43:47 24 4
gpt4 key购买 nike

我有一个不断写入的文件,同时它已注册到 watchService。是否有可能检测到它已经完成,使用 WatchEvent.

请注意,我所说的完成是指之前写入该文件的作者已经完成,我希望没有其他人打开该文件并写入。

最佳答案

我在 Windows paltform 上遇到了同样的问题。我尝试使用超时来解决它:例如,当超时 1 秒后(自上次修改事件以来),我认为该文件已完成。但它不适用于大文件:我说过在超时后会触发修改事件。在我的应用程序中,我将文件复制到目录中。我通过在复制文件后复制一个临时文件解决了这个问题。在这种情况下,当为临时文件触发创建事件时,第一个文件就完成了。

N.B: 对于 linux 平台,我做了一些搜索,我发现了一个使用 renameTo() 方法来检查文件是否仍然被进程锁定的建议。如果 remaneTo() 返回 true,则您的文件已完成。在我依赖于 Windows 的项目中,我尝试了 renameTo() 但我得到了一个真实的值并且文件不完整。

关于java - 在 Java 中使用 WatchService 检测文件完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34085222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com