除了可以使用系统API进行HDFS操作,还可以通过Java的IO流进行文件的上传和下载。适用于HDFS的自定义操作,其实API的底层也是使用IO流进行操作的。
1. 把本地的文件上传到HDFS
@Test
public void putFileToHDFS() throws IOException, URISyntaxException, InterruptedException {
// 1 获取fs对象
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(new URI("hdfs://hadoop102:9000"), conf, "lg");
// 2 获取输入流
FileInputStream fis = new FileInputStream(new File("e:/cunzhang.txt"));
// 3 获取输出流
FSDataOutputStream fos = fs.create(new Path("/school/shizhang.txt"));
// 4 流对拷
IOUtils.copyBytes(fis, fos, conf);
// 5 关闭资源
IOUtils.closeStream(fos);
IOUtils.closeStream(fis);
fs.close();
}
2. 把HDFS的文件下载到本地
@Test
public void getFileFromHDFS() throws URISyntaxException, IOException, InterruptedExcep