在 Spring-XD 中,文件 源检测输入目录中的新文件并通过管道流式传输它们的内容。
是否有类似的接收器在输出目录中创建单独的结果文件(例如使用原始文件名),而不是所有结果都附加到的单个文件,http://docs.spring.io/spring-xd/docs/ current/reference/html/#file-sink:“文件接收器使用流名称作为它创建的文件的默认名称,并将文件放在 /tmp/xd/output/ 目录中。”?
在 Spring-XD 中,文件 源检测输入目录中的新文件并通过管道流式传输它们的内容。
是否有类似的接收器在输出目录中创建单独的结果文件(例如使用原始文件名),而不是所有结果都附加到的单个文件,http://docs.spring.io/spring-xd/docs/ current/reference/html/#file-sink:“文件接收器使用流名称作为它创建的文件的默认名称,并将文件放在 /tmp/xd/output/ 目录中。”?
向下滚动到您引用的该文档中的选项。
使用--nameExpression=...
.
如果您正在使用mode=contents
; 原始文件名在file_name
标题中可用:
--nameExpression=headers[file_name]
mode=lines
当前不捕获文件名(它将在下一个版本中修复)。
如果您使用mode=ref
,则需要设置标题。
最小的工作示例
在春天-XD
stream create --name test --definition "file --mode=contents | b:file --binary=true --dirExpression='''/tmp/out''' --nameExpression=headers[file_name]" --deploy
比
echo "1111" > /tmp/xd/input/test/file1.txt
echo "2222" > /tmp/xd/input/test/file2.txt
结果是
ll /tmp/out/
>
> -rw-rw-r-- 1 rmv rmv 5 Jul 7 10:19 file1.txt
> -rw-rw-r-- 1 rmv rmv 5 Jul 7 10:19 file2.txt