Java ApacheCamel:如何查看主体内部以确定文件格式

Java ApacheCamel:如何查看主体内部以确定文件格式,java,csv,apache-camel,Java,Csv,Apache Camel,我们收到.csv文件(通过ftp和电子邮件),每个文件都可以是几种不同格式中的一种(可以通过查看文件的顶行来确定)。我对ApacheCamel相当陌生,但希望实现一个基于内容的路由器,并将每个路由器解组到相关类 我当前的解决方案是将文件分解为字符串列表,手动使用第一行确定文件类型,然后使用其余字符串创建相关实体实例 有没有更干净、更好的方法?您可以使用最适合您的文件的方法 public String checkFileType(@Body File file) { return dete

我们收到.csv文件(通过ftp和电子邮件),每个文件都可以是几种不同格式中的一种(可以通过查看文件的顶行来确定)。我对ApacheCamel相当陌生,但希望实现一个基于内容的路由器,并将每个路由器解组到相关类

我当前的解决方案是将文件分解为字符串列表,手动使用第一行确定文件类型,然后使用其余字符串创建相关实体实例

有没有更干净、更好的方法?

您可以使用最适合您的文件的方法

public String checkFileType(@Body File file) {
    return determineFileType(file);
}

private String determineFileType(File file) {...}
这样,您可以通过分离文件类型检查和处理的任何其他部分来保持路由干净。因为文件类型检查只是元数据扩展

例如,您可以只调用bean)

然后,您可以轻松地使用消息头

.choice()
    .when(header("fileType").isEqualTo("foo"))
    ...
.choice()
    .when(header("fileType").isEqualTo("foo"))
    ...