/*需求:
在指定文件目录下的所有文件中,检索某一特定字符串所出现的行,将这些行的内容输出到本地文件系统的输出文件夹中。这个程序
假定只有第一层目录下的文件才有效,而且,假定文件都是文本文件。为了防止单个的输出文件过大,这里还加了一个文件最大行数限制
当文件行数达到最大值时,便关闭此文件,创建另外的文件继续保存。保存的结果文件名为1,2,3,4,..,*/
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class ResultFilter {
//实现逻辑:获取改目录下所有文件的信息,对每一个文件(打开,循环读取数据,写入目标位置,关闭文件,最后关闭输出文件)
public static void main(String[] args) throws IOException {
Configuration conf = new Configuration();
//hdfs和local分别对应HDFS实例和本地文件系统实例
FileSystem hdfs = FileSystem.get(conf);
FileSystem local = FileSystem.get(conf);
Path inputDir, localFile;
int singleFileLines, numLines, numFiles;
FileStatus[] inputFiles;
FSDataInputStream in = null;
FSDataOutputStream out = null;
Scanner scan;
String str;
byte[] buf;
if (args.length != 4) {
//输入参数数量不够,提示参数格式后终止程序执行
System.err.println("usage resultFilter " + "