1 package cn.hadoop.fs; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.net.URI; 6 import java.net.URISyntaxException; 7 8 import org.apache.hadoop.conf.Configuration; 9 import org.apache.hadoop.fs.FSDataOutputStream; 10 import org.apache.hadoop.fs.FileStatus; 11 import org.apache.hadoop.fs.FileSystem; 12 import org.apache.hadoop.fs.Path; 13 import org.apache.hadoop.io.IOUtils; 14 import org.junit.Test; 15 /** 16 * javaAPI操作hadoop文件 17 * 18 * @author robbin 19 * 20 */ 21 public class HdfsTest { 22 23 //创建文件 24 public static void createFile(String dst,byte[]contents) throws IOException, InterruptedException, URISyntaxException{ 25 Configuration conf = new Configuration(); 26 FileSystem fs = FileSystem.get(new URI("hdfs://robbin:9000"),conf, "root"); 27 Path dstPath = new Path(dst); 28 //打开输入流 29 FSDataOutputStream outputStream = fs.create(dstPath); 30 outputStream.write(contents); 31 outputStream.close(); 32 System.out.println("文件创建成功 "); 33 } 34 //上传本地文件 35 public static void uploadFile(String src,String dst) throws IOException, InterruptedException, URISyntaxException{ 36 Configuration conf = new Configuration(); 37 FileSystem fs = FileSystem.get(new URI("hdfs://robbin:9000"),conf, "root"); 38 Path srcPath = new Path(src); 39 Path dstPath = new Path(dst); 40 fs.copyFromLocalFile(false, srcPath, dstPath); 41 //打印文件路径 42 System.out.println("Upload to "+conf.get("fs.default.name")); 43 FileStatus[] listStatus = fs.listStatus(dstPath); 44 for (FileStatus fileStatus : listStatus) 45 { 46 System.out.println(fileStatus.getPath()); 47 } 48 49 } 50 //删除文件 51 public static void delete(String filePath) throws IOException{ 52 Configuration conf = new Configuration(); 53 FileSystem fs = FileSystem.get(conf); 54 Path srcPath = new Path(filePath); 55 boolean isOk = fs.deleteOnExit(srcPath); 56 if(isOk){ 57 System.out.println("删除成功"); 58 }else{ 59 System.out.println("删除失败"); 60 } 61 62 } 63 //创建目录 64 public static void mkdir(String path) throws IOException, InterruptedException, URISyntaxException{ 65 Configuration conf = new Configuration(); 66 FileSystem fs = FileSystem.get(new URI("hdfs://robbin:9000"),conf, "root"); 67 Path srcPath = new Path(path); 68 boolean isOk = fs.mkdirs(srcPath); 69 if(isOk){ 70 System.out.println("创建目录成功"); 71 }else{ 72 System.out.println("创建目录失败"); 73 } 74 } 75 //读取文件 76 public static void readFile(String filePath) throws IOException, InterruptedException, URISyntaxException{ 77 FileSystem fs = FileSystem.get(new URI("hdfs://robbin:9000"), new Configuration(), "root"); 78 Path srcPath = new Path(filePath); 79 InputStream is = null; 80 is =fs.open(srcPath); 81 IOUtils.copyBytes(is,System.out,5096,false); 82 } 83 //重命名文件 84 public static void renameFile(String oldName,String newName) throws IOException, InterruptedException, URISyntaxException{ 85 86 FileSystem fs = FileSystem.get(new URI("hdfs://robbin:9000"), new Configuration(), "root"); 87 Path oldPath = new Path(oldName); 88 Path newPath = new Path(newName); 89 boolean isOk = fs.rename(oldPath, newPath); 90 if(isOk){ 91 System.out.println("修改名字成功"); 92 }else{ 93 System.out.println("修改名字失败"); 94 } 95 96 } 97 public static void main(String[] args) throws IOException, InterruptedException, URISyntaxException { 98 //重命名文件 99 //renameFile("/robbin/upload.txt","/robbin/robbin2.txt"); 100 //测试上传文件 101 //uploadFile("D:\\upload.txt", "/user/"); 102 //测试创建文件 103 //byte[] contents = "hello world 世界你好\n".getBytes(); 104 //createFile("/user/robbin3.txt",contents); 105 //测试删除文件 106 //delete("/user/robbin.txt"); //使用相对路径 107 //delete("/user"); //删除目录 108 //测试新建目录 109 //mkdir("user"); 110 //测试读取文件 111 readFile("/user/upload.txt"); 112 113 } 114 115 116 }