PutFile
将输入数据流的内容输出到指定的文件中
参数说明
目录
指定目标文件存储的文件夹
文件名
指定目标文件名,默认为输入数据流的属性值,即${filename},该值是一个纳秒的时间戳值, 比如:24749105929099。
冲突解决策略
当文件已经存在时,决定如何处理的策略选择:
- 替换,则以输入数据流的内容替换原文件,实际上是先删除原文件,再写入新内容。
- 保留原始,不对原始文件进行任何修改,忽略写入新文件。
- 失败处理,将输入数据流输出到失败连线,并惩罚输入流。
- 追加,基于原始文件,追加新内容到文件中。
创建不存在目录
如果选择不创建,且目录不存在,将输入数据流输出到失败连线,并惩罚输入流。
最大文件数
用于控制”目录“参数所指的目标目录里允许的写入的最大文件数,如果设置了限制,则超过该值,将输入数据流输出到失败连线,并惩罚输入流。
修改时间
可指定文件的修改时间,且格式为:yyyy-MM-dd'T'HH:mm:ssZ
也支持表达式,比如数据流的属性: ${file.lastModifiedTime}
如果格式错误而导致解析出错,否则会记录警告级别的错误日志,并忽略该设置。
权限
支持设置文件权限,同时支持数字或字母形式,即可设置诸如:750
或者 rwxr-x---
。
且依赖于系统是否允许设置,否则可能报错并记录警告级别的错误日志,并忽略权限设置。
所有者
支持设置文件的拥有者(owner)的名字,该名字将是当前系统中有效的用户名,否则将记录警告级别的错误日志,然后忽略该参数设置。
用户组
支持设置文件的用户组(group)的名字,该名字将是当前系统中有效的用户组名,否则将记录警告级别的错误日志,然后忽略该参数设置。
示例
所有生成输入数据流的内容都写入同一个文本文件"test.txt"中。
GenerateFlowFile 配置
为避免生成过多数据,将组件”调度“中的”运行安排“设置为5 s
。
再将”自定义文本“设置为:
Hello world! Time flies... ${now()}
PutFile 设置
设置了”目录“、”文件名“为指定的文件名、”冲突解决策略“改为追加。
结果
最后文件内容将持续添加新的内容,诸如:
Hello world! Time flies... Fri Apr 26 16:30:07 CST 2019
Hello world! Time flies... Fri Apr 26 16:30:12 CST 2019
Hello world! Time flies... Fri Apr 26 16:30:17 CST 2019
Hello world! Time flies... Fri Apr 26 16:30:22 CST 2019
Hello world! Time flies... Fri Apr 26 16:30:27 CST 2019
Hello world! Time flies... Fri Apr 26 16:30:32 CST 2019
流程模板
参见附件(请右键另存保存):putfile-append示例