gpt4 book ai didi

java - WatchService 锁定了一些文件?

转载 作者:搜寻专家 更新时间:2023-10-31 20:34:41 26 4
gpt4 key购买 nike

我正在使用 java.nio WatchService 来监视文件系统的变化(对于 webapp syncing project )。

但是,当我清理监视的目录时,我遇到一个文件正在使用的问题(事实上,我正在使用 maven 进行清理,而 maven 提示它无法清理所有内容)。这意味着 WatchService 以某种方式锁定了监视的资源。

如何在没有任何锁定/不允许删除的情况下观看目录?

最佳答案

我长期以来一直为此目的使用 Apache Commons VFS2,在任何操作系统中都没有出现任何问题。基本上,您需要一个类来实现 FileListener 接口(interface),该接口(interface)允许您在从目录中添加/更新/删除文件时执行操作:

public interface FileListener {
/**
* Called when a file is created.
*/
void fileCreated(FileChangeEvent event) throws Exception;

/**
* Called when a file is deleted.
*/
void fileDeleted(FileChangeEvent event) throws Exception;

/**
* Called when a file is changed.
*/
void fileChanged(FileChangeEvent event) throws Exception;
}

更多信息:Link to FileListener

然后您需要启动该文件监听器的监视器。在这里,您有一个关于如何执行此操作的未经测试的代码段:

private void startMonitor() {
Logger logger = LogManager.getLogger(MyClass.class);
try {
FileSystemManager fileSystemManager = VFS.getManager();
FileObject dirToWatchFO = null;
String path = "dir/you/want/to/watch";

File pathFile = new File(path);
path = pathFile.getAbsolutePath();
dirToWatchFO = fileSystemManager.resolveFile(path);

DefaultFileMonitor fileMonitor = new DefaultFileMonitor(new MyFancyFileListener());
fileMonitor.setRecursive(false);
fileMonitor.addFile(dirToWatchFO);
fileMonitor.start();
} catch (FileSystemException e) {
logger.error("SOMETHING WENT WRONG!!", e);
}
}

希望对您有所帮助!

关于java - WatchService 锁定了一些文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20017861/

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