Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.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_File Io_Batch Processing - Fatal编程技术网

Java批处理

Java批处理,java,file-io,batch-processing,Java,File Io,Batch Processing,我将阅读2000个文件,并用java对它们进行一些处理。所以我想我应该使用批处理。但我怎么办呢?我的系统是Windows 7。Java不提供批处理的内置支持。你需要使用类似的东西 不能批量读取文件。你一次读一本。您可以使用多个线程,但我会先编写单线程 无论您使用的是什么操作系统。假设您能够处理一个文件,您有两个选择:使用文件列表,或通过目录重复。但是,如果您需要回滚由于临近结束时发生的某些事情而导致的更改,那么这会变得更加棘手。您必须创建要进行的更改列表,然后在批处理操作结束时提交所有更改 //

我将阅读2000个文件,并用java对它们进行一些处理。所以我想我应该使用批处理。但我怎么办呢?我的系统是Windows 7。

Java不提供批处理的内置支持。你需要使用类似的东西

不能批量读取文件。你一次读一本。您可以使用多个线程,但我会先编写单线程


无论您使用的是什么操作系统。

假设您能够处理一个文件,您有两个选择:使用文件列表,或通过目录重复。但是,如果您需要回滚由于临近结束时发生的某些事情而导致的更改,那么这会变得更加棘手。您必须创建要进行的更改列表,然后在批处理操作结束时提交所有更改

// first option
batchProcess(Collection<File> filesToProcess) {
    for(File file : filesToProcess) processSingle(file);
}

// second option
batchProcess(File file) {
    if(file.isDirectory()) {
        for(File child : file.listFiles()) {
            batchProcess(file);
        }
    } else {
        processSingle(file);
    }
}
//第一个选项
batchProcess(集合文件处理){
对于(文件:filesToProcess)processSingle(文件);
}
//第二种选择
批处理(文件){
if(file.isDirectory()){
对于(文件子项:File.listFiles()){
批处理(文件);
}
}否则{
进程单(文件);
}
}

您可以将Apache Camel/Servicemix ESB与ActiveMQ结合使用

第一步是在ActiveMQ消息中逐个写入文件名。这可以通过一个所谓的路由(框架自动使用一个单独的线程)完成。在这里,您可以选择使用哪个组件。有一个文件组件,它读取文件并将它们移动到后面的位置,或者您可以使用一个简单的JavaBean

在第二个路由中,您读取活动MQ消息(如果必须按顺序处理文件,则为单个使用者;如果您希望获得更高的性能,则为多个使用者),然后在处理器或Java Bean中处理文件内容

您可以随时(在处理过程中)停止骆驼上下文,然后重新启动它,通过从活动MQ消息队列加载/使用它,在下一个尚未处理的文件上启动进程。

请检查以下内容:

这是JSR-javax.Batch上的一个新“批处理”,更具体地说,