如何拆分为文件并在输出文件名中添加编号(不覆盖)



我有一个将大文件拆分为小文件的路由。所有拆分文件都应写入同一目录。文件端点(生产者)的默认行为似乎总是覆盖。有没有一种简单的方法可以让文件生产者通过在文件名中添加计数器来进行简单的重命名?就像在操作系统中一样,如果你在文件上复制/粘贴,操作系统会通过添加(copy-1…)来自动重命名。

您可以使用splitter CamelSplitIndex属性,并在生产者的fileName选项中使用简单表达式添加拆分索引,如下所示。

 from("file:data/inbox?")
    .split(body(String.class).tokenize("n"))
    .to("file:data/outbox/?fileName=${file:name.noext}-${property.CamelSplitIndex}.csv");

因此,对于4行输入csvtest.csv,产生的输出将是

测试-0.csv测试-1.csv测试-2.csvtest-3.csv

有关拆分索引的详细信息,请参阅https://camel.apache.org/splitter.html

和中的简单表达式https://camel.apache.org/simple.html

最新更新