Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 监视共享文件夹的更改并拉入数据库_Java_Database_Shared Directory - Fatal编程技术网

Java 监视共享文件夹的更改并拉入数据库

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

我有一个文件夹,用户可以在其中保存或修改文件。 创建或修改文件时,我需要序列化该文件并将其插入数据库

我已经看过Java Watch目录和ApacheCommons.io.monitor。监视目录方法会拾取每个事件,因为它与导致问题的本机文件事件通知相关联

监视目录的最佳方式/或任何其他方法是什么

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集成