import org.apache.commons.io.monitor.FileAlterationListenerAdaptor;
import org.apache.commons.io.monitor.FileAlterationObserver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Configuration;
import java.io.File;
import java.io.IOException;
/**
* @author whh
* @date 2019/4/18 16:56
*/
@Configuration
public class FileListener extends FileAlterationListenerAdaptor {
protected Logger logger = LoggerFactory.getLogger(FileListener.class);
@Override
public void onStart(final FileAlterationObserver observer) {
}
@Override
public void onDirectoryCreate(final File directory) {
handler();
}
@Override
public void onDirectoryChange(final File directory) {
handler();
}
@Override
public void onDirectoryDelete(final File directory) {
}
@Override
public void onFileCreate(final File file) {
handler();
}
@Override
public void onFileChange(final File file) {
handler();
}
@Override
public void onFileDelete(final File file) {
}
@Override
public void onStop(final FileAlterationObserver observer) {
}
private void handler() {
// Todo
}
}
@Bean
void listen() {
FileAlterationMonitor fileAlterationMonitor = new FileAlterationMonitor();
IOFileFilter filter = FileFilterUtils.or(FileFilterUtils.directoryFileFilter(), FileFilterUtils.fileFileFilter());
FileAlterationObserver fileAlterationObserver = new FileAlterationObserver(new File("F:\\ftp\\content\\"), filter);
FileListener fileListener = new FileListener();
fileAlterationObserver.addListener(fileListener);
fileAlterationMonitor.addObserver(fileAlterationObserver);
try {
fileAlterationMonitor.start();
logger.debug("文件监听器启动了 ");
} catch (Exception e) {
logger.debug("文件监听启动失败->{}",e.getMessage());
}
}
这里我有遇到一个小问题,listener因为是new出来的实例 ,没办法注入spring,所以我采用了外部工具类初始化需要的实例,添加到map去,然后再去map里拿实例