Camel文件到字符串列表

时间:2016-10-16 10:45:46

标签: java file csv apache-camel

我有一个csv文件:

40111683,,NULL,831,242,2015-11-18,2018-09-30,0.250,0.050,0.00000,0.00000,100.00000
40111683,,NULL,831,242,2015-11-18,2018-09-30,0.250,0.050,0.00000,0.00000,100.00000
40111683,,NULL,831,242,2015-11-18,2018-09-30,0.250,0.050,0.00000,0.00000,100.00000
40111683,,NULL,831,242,2015-11-18,2018-09-30,0.250,0.050,0.00000,0.00000,100.00000

以及以下Camel路线:

<camelContext xmlns="http://camel.apache.org/schema/spring" id="deContext" autoStartup="true">
<route>
    <from uri="file:src/data" />
    <to uri="bean:getfile?method=process" />
</route>
</camelContext>

Java Bean:

@Service
public class Getfile{

public void process(List<String> strings){

System.out.println(strings);

}
}

这是我的错误:

  

没有类型转换器可以从类型:org.apache.camel.component.file.GenericFile转换为所需类型:java.util.List,其值为GenericFile [Data-Final.csv]]

如何将文件编组到Camel中的字符串列表中?

2 个答案:

答案 0 :(得分:0)

  1. 使用convertBodyTo(String.class)。
  2. 正如Claus Ibsen所说,将结果字符串拆分为行
  3. 处理自定义bean中的每一行

答案 1 :(得分:0)

正如错误消息告诉您:&#34; 没有可用的类型转换器&#34;。

所以你需要编写自己的类型转换器来转换GenericFile - &gt;列表与LT;字符串&GT;

例如:

@Component
@Converter
public class MyConverter implements TypeConverters{

     @Converter
     public List<String> GenericFiletoListString(GenericFile<File> file) throws IOException {
             return Files.readAllLines(file.getFile().toPath(), StandardCharsets.UTF_8);
     }
}