我有一个<file:inbound-endpoint>
,它读取一个大文件并将其传递给java组件,该组件将大文件拆分为多个较小的文件。我将所有这些较小的文件添加到一个列表中,并将list
从java组件返回到mule flow。
现在,在mule flow中,我使用<collection-splitter>
或<foreach>
将这些文件输出到<file:outbound-endpoint>
。
问题在于
答案 0 :(得分:4)
file:file-to-byte-array-transformer
之后和List<File>
之前添加file:outbound-endpoint
,以便Mule读取java.io.File
的实际内容。outputPattern
上定义file:outbound-endpoint
,使用MEL表达式根据正在进行的消息的属性以及其他表达式构建唯一的文件名,例如时间戳或UUID,无论您的需求是什么。答案 1 :(得分:3)
file:file-to-byte-array-transformer
。
对于第二部分,要获得与创建文件时分配的文件名相同的文件输出到<file:outbound-endpoint>
的名称,我做了以下操作:
<foreach>
<set-variable variableName="fname" value="#[payload.path]"/>
<logger level="INFO" message="fname is: #[fname]" />
<file:file-to-byte-array-transformer />
<file:outbound-endpoint path="${file.csv.path}" outputPattern="#[fname]"/>
</foreach>
在将文件转换为字节数组之前,请在字节数组转换后获取文件名,但在#[payload]
中不可用,但您仍可以从#[originalPayload]
获取