此question正是我要的内容。唯一的区别是我正在使用固定长度的文件。
我的问题是使用此方法,我似乎返回了Iterator对象,而不是删除了带有3行标题的文件。
骆驼路线应使用.txt文件,删除前三行,然后将结果发送到文件端点。
我尝试了简单语言的各种变体,但均无济于事。我在书,文档或在线中找不到任何具体案例。
在下面查看我的骆驼路线
from(inputFilePath).routeId("MyRoute")
.streamCaching()
.threads(threadPoolSize)
.log("${headers.CamelFileName}: Unmarshalling to Java POJO")
.log("${body} Body Before Transform")
.convertBodyTo(String.class)
.transform().simple("skip(3)")
.log("${body} Body After Transform")
.to(outputFilePath)
我希望返回一个.txt文件,其中前三行已删除,其余结构未更改。
相反,我得到了对迭代器对象的引用->
2019-06-19 14:55:30.497 INFO 2868 --- [ad #2 - Threads] MyRoute : org.apache.camel.util.SkipIterator@4d894ea5 Body After Transform
任何帮助或建议将不胜感激!
答案 0 :(得分:2)
简单功能skip(n)
旨在跳过n
中的List
个项目,但您的身体为String
。
您需要获得List<String>
行(Tokenize language)才能使用。
要将此列表重新加入String
,您可以使用Bean EIP来呼叫org.apache.commons.lang3.StringUtils
。
from(inputFilePath)
.transform(body().tokenize("\n"))
.transform(simple("${skip(3)}"))
.bean(StringUtils.class, "join(${body}, '\n')")
.to(outputFilePath);