如果您打算使用正则表达式路由,下面是一个调用运算符以仅读取特定扩展名的文件的示例:
// DirectoryScan operator with an absolute file argument and a file name pattern
stream<rstring name> Dir2 = DirectoryScan()
{
param
directory : "/tmp/work";
pattern : "\\.txt$";
}
如果这不起作用,是否可以设置 MQ 将文件写入不同的目录,然后在完成后将其移动到目标目录?
如果您知道文件的大小,您可以做的一件事是使用该Size()
函数忽略文件,直到它达到正确的大小。此代码段使用Custom
运算符等待文件大小至少为 2000 字节。
graph
stream <rstring filename, uint64 size> DirScanOutput = DirectoryScan() {
param
directory: "test1";
sleepTime: 10.0; //wait 10s between scans
pattern: ".*\\.txt";
output DirScanOutput : size= Size();
}
stream<rstring file> FileNameStream= Custom(DirScanOutput as In){
logic
onTuple In:{
if (size < 2000ul){
printStringLn("Required size not met yet.");
} else {
printStringLn("Size of file reached.");
submit({file=filename}, FileNameStream);
}
}
}
stream <cityData> CityDataRecord = FileSource(FileNameStream) {
param
format: csv;
}
我希望这些建议之一对您有用。