Java 监视共享文件夹的更改并拉入数据库
我有一个文件夹,用户可以在其中保存或修改文件。 创建或修改文件时,我需要序列化该文件并将其插入数据库 我已经看过Java Watch目录和ApacheCommons.io.monitor。监视目录方法会拾取每个事件,因为它与导致问题的本机文件事件通知相关联 监视目录的最佳方式/或任何其他方法是什么Java 监视共享文件夹的更改并拉入数据库,java,database,shared-directory,Java,Database,Shared Directory,我有一个文件夹,用户可以在其中保存或修改文件。 创建或修改文件时,我需要序列化该文件并将其插入数据库 我已经看过Java Watch目录和ApacheCommons.io.monitor。监视目录方法会拾取每个事件,因为它与导致问题的本机文件事件通知相关联 监视目录的最佳方式/或任何其他方法是什么 import org.apache.commons.io.monitor.*; import java.io.*; public class ApacheWatch2 { public stati
import org.apache.commons.io.monitor.*;
import java.io.*;
public class ApacheWatch2 {
public static void startApacheWatch(String path) {
final File folder = new File(path);
if (folder.exists()) {
try {
FileAlterationObserver observer = new FileAlterationObserver(folder);
observer.addListener(new ChangeEventHandler());
final FileAlterationMonitor monitor = new FileAlterationMonitor();
monitor.addObserver(observer);
monitor.start();
} catch (Exception e) {
e.printStackTrace(System.err);
}
} else {
throw new RuntimeException("File does not exist");
}
}
private static class ChangeEventHandler extends FileAlterationListenerAdaptor {
@Override
public void onFileCreate(File file) {
//DO SERIALISATION STUFF WITH FILE
}
@Override
public void onFileChange(File file) {
//DO SERIALISATION STUFF WITH FILE
}
}
}
我建议使用look@spring batch,它可以满足db交互的轮询目录、调度和编写器(以及许多其他功能)。它会导致什么问题?您可以手动轮询目录,但这会带来一系列问题。或者,您可以只使用
changeventhandler
记录哪些文件需要加载,然后再加载,因此与单个文件相关的多个事件只会导致一次加载。请使用Apache Camel或Spring集成