gpt4 book ai didi

java - 如何在用java打开文件之前等待windows进程完成

转载 作者:搜寻专家 更新时间:2023-11-01 01:56:16 24 4
gpt4 key购买 nike

我实现了一个监听器,它会通知我们是否在特定目录中收到新文件。这是通过轮询和使用 TimerTask 实现的。现在这个程序已经设置好了,一旦它接收到一个新文件,它就会调用另一个 java 程序来打开文件并验证它是否是正确的文件。我的问题是,由于轮询发生在指定的秒数之后,因此可能会出现文件被复制到该目录中并因此被 Windows 锁定的情况。

这会抛出 IOException,因为其他尝试打开它进行验证的 java 程序无法打开(“文件正在被另一个进程使用”)。

有没有一种方法可以知道 Windows 何时完成复制,然后调用第二个程序从 Java 进行验证?

如果有人需要它们来提供帮助,我将非常乐意发布代码片段。

谢谢

最佳答案

非常感谢所有的帮助,我在使用 WatchEvent 时遇到了同样的问题。不幸的是,正如您所说,file.canRead() 和 file.canWrite() 都返回 true,即使文件仍被 Windows 锁定。所以我发现,如果我尝试用相同的名称“重命名”它,我就知道 Windows 是否正在处理它。所以这就是我所做的:

    while(!sourceFile.renameTo(sourceFile)) {
// Cannot read from file, windows still working on it.
Thread.sleep(10);
}

关于java - 如何在用java打开文件之前等待windows进程完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8334532/

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