HDFSApi

package com.api;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
public class Api {
 
 private static final String rootUri = "hdfs://grid131:9000";
 
 /**
  * 获得FileSystem
  * @param fileUri hdfs://grid131:9000
  * @return
  */
 public FileSystem getFileSystem(String rootUri) {
  Configuration conf = new Configuration();
  FileSystem fs = null;
  
  try {
   URI uri = new URI(rootUri);
   fs = FileSystem.get(uri, conf);
  } catch (URISyntaxException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
  
  return fs;
 }
 
 /**
  * 读取文件
  * @param fileUri hdfs://grid131:9000/user/grid/tt.txt
  * @throws IOException 
  */
 public void readFile(String fileUri) throws IOException {
  FileSystem fs = this.getFileSystem(Api.rootUri);
  FSDataInputStream is = fs.open(new Path(fileUri));
  IOUtils.copyBytes(is, System.out, 4096, false);
  IOUtils.closeStream(is);
 }
 
 /**
  * 创建目录
  * @param fileUri hdfs://grid131:9000/user/grid/out
  * @throws IOException
  */
 public void mkdir(String fileUri) throws IOException {
  FileSystem fs = this.getFileSystem(Api.rootUri);
  fs.mkdirs(new Path(fileUri));
 }
 
 /**
  * 删除目录
  * @param fileUri hdfs://grid131:9000/user/grid/out
  * @throws IOException
  */
 public void delDir(String fileUri) throws IOException {
  FileSystem fs = this.getFileSystem(Api.rootUri);
  fs.deleteOnExit(new Path(fileUri));
 }
 
 /**
  * 遍历目录
  * @param fileUri hdfs://grid131:9000/user/grid
  * @throws IOException 
  */
 public void list(String fileUri) throws IOException {
  FileSystem fs = this.getFileSystem(Api.rootUri);
  FileStatus[] fileStatus = fs.listStatus(new Path(fileUri));
  for(FileStatus s:fileStatus) {
   String isDir = s.isDir()?"目录":"文件";
   String name = s.getPath().toString();
   System.out.println(name + " " + isDir);
  }
 }
 
 public static void main(String[] args) throws Exception {
  Api api = new Api();
  String rootUri = "hdfs://grid131:9000";
  FileSystem fs = api.getFileSystem(rootUri);
  System.out.println(fs.toString());
  
  String fileUri = "hdfs://grid131:9000/stu.txt";
  api.readFile(fileUri);
  
  fileUri = "hdfs://grid131:9000/user/grid/kk";
  api.mkdir(fileUri);
  
  fileUri = "hdfs://grid131:9000/user/grid/kk/stu.txt";
  api.readFile(fileUri);
  
  //fileUri = "hdfs://grid131:9000/user/grid/input7/text";
  //api.readFile(fileUri);
  
  fileUri = "hdfs://grid131:9000/user/grid/kk";
  api.delDir(fileUri);
  fileUri = "hdfs://grid131:9000/user/grid";
  api.list(fileUri);
  
 }
}

你可能感兴趣的:(HDFSApi)