hadoop的文件系统在程序代码里面用起来就如我们本地的文件系统一样,可以从里面读取文件,存入文件,等等。
下面我们来演示一个从hdfs中的一个目录里,读取这个目录下所有文件的文件名的程序。
1 import org.apache.hadoop.conf.Configuration; 2 import org.apache.hadoop.fs.*; 3 import org.apache.hadoop.mapreduce.lib.input.FileSplit; 4 import org.junit.Test; 5 6 import java.io.IOException; 7 import java.net.URI; 8 9 /** 10 * Created with IntelliJ IDEA. 11 * User: Isaac Li 12 * Date: 12/11/12 13 * Time: 9:42 AM 14 * To change this template use File | Settings | File Templates. 15 */ 16 public class WordCountTest { 17 @Test 18 public void test(){ 19 Configuration conf = new Configuration(); 20 try { 21 //创建一个文件系统实例 22 FileSystem hdfs = FileSystem.get(URI.create("hdfs://10.40.30.173:9000/user/root/input"), conf); 23 //文件状态 24 FileStatus[] inputFiles = hdfs.listStatus(new Path("hdfs://10.40.30.173:9000/user/root/input")); 25 //输出文件名 26 for(int i = 0; i < inputFiles.length; i++){ 27 System.out.println(inputFiles[i].getPath().getName()); 28 } 29 }catch(IOException e){ 30 e.printStackTrace(); 31 } 32 } 33 }
代码重现步骤:
1. 安装hadoop的相关jar包
2. 将此段代码复制到你的eclipse或者其他IDE
3. 将代码中hdfs的URI,改成你的hdfs的URI
4. 运行代码,即可输出你指定的hdfs的文件夹下的所有文件