您的位置:首页 > 运维架构

hadoop 遍历hdfs文件夹列出其中所有的txt文件

2016-07-18 13:05 369 查看
import java.net.URI;
import java.util.ArrayList;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class FindTxts {
public static void main(String[] args) throws Exception {
ArrayList<String> pathList = findTxts("/home/data");
for (int i = 0; i < pathList.size(); i++) {
System.out.println(pathList.get(i));
}
}

private static ArrayList<String> findTxts(String parentDir) throws Exception{
ArrayList<String> pathList=new ArrayList<String>();
Configuration conf=new Configuration();
FileSystem fs=FileSystem.get(URI.create(parentDir),conf);
Path path=new Path(parentDir);
FileStatus status[]=fs.listStatus(path);
String PathString=new String();
for(int i = 0;i<status.length;i++){
PathString=status[i].getPath().toString();
if(status[i].isFile()&&PathString.endsWith(".txt")) pathList.add(PathString);	//判断PathString是否为parentDir/*.txt的形式
else{
if(status[i].isDirectory()) findTxts(PathString,pathList);		//如果status[i]代表的是一个目录,执行findTxts(String parentDir,ArrayList<String> pathList)方法
}
}

return pathList;
}

private static void findTxts(String parentDir, ArrayList<String> pathList) throws Exception {
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(URI.create(parentDir), conf);
Path path = new Path(parentDir);
FileStatus status[] = fs.listStatus(path);
String PathString = new String();
for(int i = 0;i<status.length;i++){
PathString=status[i].getPath().toString();
if(status[i].isFile()&&PathString.endsWith(".txt")) pathList.add(PathString);	//判断PathString是否为parentDir/*.txt的形式
else{
if(status[i].isDirectory()) findTxts(PathString,pathList);		//如果status[i]代表的是一个目录,执行findTxts(String parentDir,ArrayList<String> pathList)方法
}
}
return;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop hdfs