您的位置:首页 > 其它

Flume-ng-1.3.0 spooling source的方式增加了对目录的递归检测的支持

2013-04-22 17:31 323 查看
原有的spooling source的方式只支持一级目录的文件变动的检测,修改了一下源码支持对目录的递归检测,可以支持多级目录下的文件变动

SpoolingFileLineReader类增加以下下方法

/**

* add by yangbutao

*

* @param files

* @param dir

* @param filter

*/

private void listDirFiles(List<File> files, File dir, FileFilter filter) {

File[] childs = dir.listFiles(filter);// 列出目录下所有的文件

for (int i = 0; i < childs.length; i++) {

if (childs[i].isFile()) {

files.add(childs[i]);

} else {

if (childs[i].isDirectory()) {

listDirFiles(files, childs[i], filter);// 如果是个目录,就继续递归列出其下面的文件.

}

}

}

}



修改getNextFile方法

private Optional<FileInfo> getNextFile() {

/* Filter to exclude finished or hidden files */

FileFilter filter = new FileFilter() {

public boolean accept(File pathName) {

if ((pathName.getName().endsWith(completedSuffix))

|| (pathName.getName().startsWith("."))) {

return false;

}

return true;

}

};

// List<File> candidateFiles =Arrays.asList(directory.listFiles(filter));//注释掉原有的

List<File> candidateFiles = new ArrayList<File>();//新增的

listDirFiles(candidateFiles, directory, filter);//新增的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: