本地文件变更监听是很简单的功能,但由于之前写的很 low,这次实现尽量更加地面向对象罢了。对于文件的重命名会先触发 ADD 事件,然后才是 DELETE 事件!
<dependency>
<groupId>io.github.dk900912</groupId>
<artifactId>file-watcher</artifactId>
<version>1.0.1</version>
</dependency>
public class FileWatcherApplication {
public static void main(String[] args) {
FileSystemWatcher fileWatcher = new FileSystemWatcher();
fileWatcher.addListener(new SimpleFileChangeListener());
File directory1 = new File("C:\\Users\\dk900912\\IdeaProjects\\test");
File directory2 = new File("C:\\Users\\dk900912\\IdeaProjects\\tset");
fileWatcher.addSourceDirectories(Arrays.asList(directory1, directory2));
// 仅仅监听 txt 文本文件的变更
fileWatcher.setFileFilter(pathname -> pathname.getName().endsWith(".txt"));
fileWatcher.start();
for (;;){
}
}
}
在上述两个目录中新增或者更新文件,然后将输出:
2022-10-25 21:36:15.122 INFO 21428 --- [ File Watcher] i.g.d.f.l.SimpleFileChangeListener : 0=={======> C:\Users\dk900912\IdeaProjects\test\1.txt (MODIFY) <======}==0
2022-10-25 21:36:34.729 INFO 21428 --- [ File Watcher] i.g.d.f.l.SimpleFileChangeListener : 0=={======> C:\Users\dk900912\IdeaProjects\tset\新建 Microsoft Excel 工作表.xlsx (ADD) <======}==0
建议自行实现
FileChangeListener
回调接口。