Java批处理

发布于 2024-12-06 07:58:11 字数 75 浏览 1 评论 0原文

我将读取 2000 个文件并用 java 对它们进行一些处理。所以我认为我应该使用批处理。但我又能怎样呢?我的系统是Windows 7。

I will read 2000 files and do some works on them with java. So I think I should use batch processing. But How could I do? My system is Windows 7.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

酷炫老祖宗 2024-12-13 07:58:11

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

您的第一步是在 ActiveMQ 消息中逐个写入文件名。这可以在一个所谓的路由中完成(框架自动创建一个单独的线程)。这里有几个选项可以选择使用哪个组件。有一个文件组件可以读取文件并将其移动到之后完成,或者您可以使用一个简单的 Java Bean。

在第二条路线中,您读取 Active MQ 消息(如果按顺序处理文件很重要,则使用单个使用者;如果需要更高的性能,则使用多个使用者),按照您的需要在处理器或 Java Bean 中处理文件内容。

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

You can use Apache Camel / Servicemix ESB in combination with ActiveMQ.

Your first step would be to write the fileNames one by one in ActiveMQ Messages. This could be done in one so called route (a separate Thread automatically by the framework). Here you have several options which component to use. There is a file component which reads files and moves them to done afterwards or you can use a simple Java Bean.

In a second route you read the Active MQ messages (single consumer if it is important to process the files in a sequence or multiple consumers if you want more performance) process the File Content in a processor or Java Bean like you want.

You can stop the Camel context any time you want (during the processing) and restart it afterwards getting the process started at the next file not yet processed by loading / consuming it from the Active MQ message queue.

久随 2024-12-13 07:58:11

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

Java does not provide built in support for batch processing. You need to use something like Spring Batch.

热血少△年 2024-12-13 07:58:11

看看这个:

http://jcp.org/en/jsr/detail?id=352

这是 JSR 上的一个新“批处理” - javax.batch

Check this out:

http://jcp.org/en/jsr/detail?id=352

This is a new "Batch" on JSR - javax.batch

聆听风音 2024-12-13 07:58:11

您无法批量读取文件。您一次可以阅读一篇。您可以使用多个线程,但我会先将其编写为单线程。

您使用什么操作系统并不重要。

You can't read files as a batch. You have the read one at a time. You can use more than one thread but I would write it single threaded first.

It doesn't matter what OS you are using.

瀞厅☆埖开 2024-12-13 07:58:11

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

// 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);
    }
}

Assuming you have the ability to work on one file, you have two options: use a file list, or recur through a directory. It gets trickier if you need to roll back changes as a result of something that happens towards the end, though. You'd have to create a list of changes to make and then commit them all at the end of the batch operation.

// 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);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文