java - 当使用 VFS (apache commons) 监视的文件被删除时,当文件被添加回来时我不会收到通知

标签 java vfs apache-commons-vfs

我有一个简单的文件监视器设置,可以监视一个文件,这样当该文件的内容发生更改、添加或删除时我就会收到通知。但是,当文件被删除时,我永远不会收到文件被添加回来的通知。这是我的代码片段:

String properyPath = "/some/directory/somexml.xml";
FileSystemManager fsManager;
fsManager = VFS.getManager();
FileObject listendir = fsManager.resolveFile( propertyPath );
DefaultFileMonitor fm = new DefaultFileMonitor( this );
fm.setRecursive( true );
fm.addFile( listendir );
fm.start();

当 propertyPath 文件被删除时,我会在 fileDeleted 实现中收到通知,但当我再次重新创建文件时,fileAdded 方法永远不会被调用。这是正常的吗?如果是这样,我如何设置才能在删除后收到添加通知?

最佳答案

您似乎受到 this issue 的影响。如票证中所述,您可以尝试设置零延迟:

fm.setDelay(0); 

或者尝试修补 DefaultFileMonitor。但是,如果您要同时监视太多文件,轻微的延迟可能会对性能产生影响。

关于java - 当使用 VFS (apache commons) 监视的文件被删除时,当文件被添加回来时我不会收到通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20057197/

相关文章:

java - 有没有办法通过Java中的VFS设置远程文件夹的权限?

java - 在Java中从JTable创建pdf文件

java - 如何正确清除VFS Ram文件系统

java - 如何在 Apache vfs 中获取文件的日期

c - 是否可以在 FUSE 文件系统中使用 Linux VFS 缓存?

java - 如何使用Java查找远程Linux机器的磁盘空间

java - apache VFS 将 res 和 zip 结合在一起

java - Java 中的优先级队列?

java - 如何在准备好的语句查询中使用oracle SYSTIMESTAMP?

java - VS Code生成maven项目失败的解决办法