我有四个(也可能是十个)传入文件,两个流文件具有相同的名称(flowfile1.txt),另一个流文件名称具有相同的名称(flowfile2.txt)。现在我想根据流文件名读取这些流文件并实现一些逻辑,并且必须发送一个流文件以输出到下一个处理器。您能帮忙解决一下吗,下面是场景。流程文件名相同但内容不同
flowfile1.txt
flowfile1.txt
flowfile2.txt
flowfile2.txt
逻辑完成后,我必须将输出发送到下一个处理器,如下所示
Flowfile1.txt(我将读取 flowfile1.txt 并执行一些逻辑,并将输出发送到 flowfile1.txt 并发送到下一个处理器, 也会对 flowfile2.txt 执行相同的操作..
我只需要如何将其读取到groovy脚本中,我将根据我的业务案例实现逻辑
首先 - 我不会推荐它。有很多用例需要用脚本硬封面...
考虑使用 MergeContent 处理器。
但是这里有一个脚本作为 ExecuteGroovyScript 处理器的参考:
//get first file from queue
def file0 = session.get()
if(!file0)return
//get all files with the same filename
def fileList = session.get{ it-> it.filename==file0.filename }
def outFile=file0.clone(false) //clone first file with all attributes but without content
outFile.write{ outStream->
def text = file0.read().getText("UTF-8") //beware to read whole content into memory on large files
for(ff in fileList){
text += ff.read().getText("UTF-8")
}
outStream.withWriter("UTF-8"){ writer->
writer.write(text)
}
}
//remove original files
session.remove(file0)
session.remove(fileList)
//transfer new file to success
REL_SUCCESS << outFile