引入依赖
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
配置监听器
@Slf4j
@Component
public class FileListener extends FileAlterationListenerAdaptor {
/**
* 文件创建执行
*/
@SneakyThrows
@Override
public void onFileCreate(File file) {
log.info("[新建]:" + file);
log.info("[新建]:" + file.getPath());
log.info("[新建]:" + file.getAbsolutePath());
}
/**
* 文件创建修改
*/
@Override
public void onFileChange(File file) {
log.info("[修改]:" + file.getAbsolutePath());
//读取文件内容
BufferedReader buf = null;
try {
buf = new BufferedReader(new InputStreamReader(new FileInputStream(file),"GBK"));
BufferedReader br = new BufferedReader(buf);
System.out.println(br.readLine());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {if (buf != null){buf.close();}}catch (Exception e){}
}
}
/**
* 文件删除
*/
@Override
public void onFileDelete(File file) {
log.info("[删除]:" + file.getAbsolutePath());
}
/**
* 目录创建
*/
@Override
public void onDirectoryCreate(File directory) {
log.info("[新建]:" + directory.getAbsolutePath());
}
/**
* 目录修改
*/
@Override
public void onDirectoryChange(File directory) {
log.info("[修改]:" + directory.getAbsolutePath());
}
/**
* 目录删除
*/
@Override
public void onDirectoryDelete(File directory) {
log.info("[删除]:" + directory.getAbsolutePath());
}
@Override
public void onStart(FileAlterationObserver observer) {
// TODO Auto-generated method stub
super.onStart(observer);
}
@Override
public void onStop(FileAlterationObserver observer) {
// TODO Auto-generated method stub
super.onStop(observer);
}
}
启动监听器
@Configuration
@Slf4j
public class FilterFileConfig {
@Autowired
private FileListener fileListener;
public void FileFilter(String rootDir){
// 轮询间隔 1 秒
long interval = TimeUnit.SECONDS.toMillis(1);
System.out.println(interval);
// 创建过滤器
// IOFileFilter directories = FileFilterUtils.and(
// FileFilterUtils.directoryFileFilter(),
// HiddenFileFilter.VISIBLE);
// IOFileFilter files = FileFilterUtils.and(
// FileFilterUtils.fileFileFilter(),
// FileFilterUtils.suffixFileFilter(".txt"));
// IOFileFilter filter = FileFilterUtils.or(directories, files);
// 使用过滤器
// FileAlterationObserver observer = new FileAlterationObserver(new File(rootDir), filter);
FileAlterationObserver observer = new FileAlterationObserver(new File(rootDir));
observer.addListener(fileListener);
//创建文件变化监听器(默认为1000毫秒执行一次扫描)
FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer);
// 开始监控
try{
monitor.start();
System.out.println("开始监听--------");
}
catch (Exception e){
log.error("异常处理",e);
}
}
}
启动springboot项目
@SpringBootApplication
@EnableScheduling
public class UserdemoApplication {
private static FilterFileConfig filterFileConfig;
@Autowired
public void setFilterFileConfig(FilterFileConfig filterFileConfig) {
this.filterFileConfig = filterFileConfig;
}
public static void main(String[] args) {
SpringApplication.run(UserdemoApplication.class, args);
//监听2处文件
filterFileConfig.FileFilter("D:\\upload");
filterFileConfig.FileFilter("D:\\英雄时刻");
}
}
成功监听

评论