以下是使用Apache Camel创建两个文件,文件名相同但扩展名不同的代码示例:
import org.apache.camel.builder.RouteBuilder;
public class FileRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
// 从源目录读取文件
from("file:/path/to/source/directory")
.split().tokenize("\n")
.process(exchange -> {
String filename = exchange.getIn().getHeader("CamelFileName", String.class);
// 获取文件名(不包含扩展名)
String baseFilename = filename.substring(0, filename.lastIndexOf('.'));
// 创建两个文件名不同的新文件
String newFilename1 = baseFilename + ".txt";
String newFilename2 = baseFilename + ".csv";
// 设置新文件名
exchange.getIn().setHeader("CamelFileName", newFilename1);
// 将消息发送到第一个目标目录
exchange.getIn().setHeader("CamelFilePath", "/path/to/destination/directory1");
// 将消息发送到第二个目标目录
exchange.getIn().setHeader("CamelFileName", newFilename2);
exchange.getIn().setHeader("CamelFilePath", "/path/to/destination/directory2");
})
.to("file:/path/to/destination/directory1")
.to("file:/path/to/destination/directory2");
}
}
在上面的示例中,我们使用Camel的file组件来读取源目录中的文件。然后,我们使用split和tokenize处理器将读取的文件逐行拆分。在处理每个文件时,我们使用process处理器获取文件名,并根据相同的文件名创建两个新文件名,分别具有不同的扩展名。
接下来,我们将两个新文件名分别设置为CamelFileName和CamelFilePath的头部属性,并将消息发送到两个目标目录。通过这种方式,我们可以创建两个文件名相同但扩展名不同的文件。