Java Spring集成:文件读取拆分和消息过滤

Java Spring集成:文件读取拆分和消息过滤,java,spring,spring-integration,filereader,Java,Spring,Spring Integration,Filereader,我正在使用Spring集成文件拆分器(XMLConfig)读取文件并处理消息 我有一个要求,我需要从文件中读取第一行和最后一行,并将它们设置为标题值,以便其余的行/消息具有该信息 换句话说,第一行和最后一行消息需要丢弃,但其有效负载需要在其余消息中设置为头 我怎样才能做到呢?谢谢你的帮助 以下代码用于从目录中读取文件并将其拆分: <int-file:inbound-channel-adapter id="fileSource" channel="fileReceiverChann

我正在使用Spring集成文件拆分器(XMLConfig)读取文件并处理消息

我有一个要求,我需要从文件中读取第一行和最后一行,并将它们设置为标题值,以便其余的行/消息具有该信息

换句话说,第一行和最后一行消息需要丢弃,但其有效负载需要在其余消息中设置为头

我怎样才能做到呢?谢谢你的帮助

以下代码用于从目录中读取文件并将其拆分:

 <int-file:inbound-channel-adapter
    id="fileSource" channel="fileReceiverChannel"
    directory="file:${file.messagesource.directory}"
    prevent-duplicates="false" ignore-hidden="true" filename-regex="${filename.regex}" >
    <int:poller fixed-delay="5000" receive-timeout="5000" 
        task-executor="pollerExecutor">
    </int:poller>
</int-file:inbound-channel-adapter>

<int-file:splitter id="splitFile"
        input-channel="splitFileChannel" output-channel="transformChannel"
        charset="UTF-8" apply-sequence="true" iterator="false" />

自5.0版以来,您可以在
filespliter
上设置FirstLineasHeader(true),第一行将作为所有消息的标题

它是XML配置中作为标题的第一行


没有机制对“最后”行执行相同的操作;为此,您需要一个自定义版本的拆分器。阅读最后一行并不容易,除非所有行的长度都相同,否则您必须先阅读整个文件。

感谢@Gary Russell的快速回复。一个简短的问题:我可以使用仅获取最后一行吗?它能在windows和linux上工作吗?或者我需要编写一个扩展ApacheCommonsFileTailingMessageProducer的类吗?谢谢