8.10 HDFSI/O操作

HDFS也提供了相应的输入输出流, 来完成文件的读与写.

相比copyFromLocal和copyToLocal有更多的参数可选. 其实copyFromLocal和copyToLocal也是使用I/O流来完成的.

8.10.1 I/O上传文件

// 使用IO流上传文件
@Test
public void IOUpload() throws Exception {
    // 1. 创建从本地磁盘读取文件的输入流
    FileInputStream fis = new FileInputStream("c:/test/copy.txt");
    // 2. 获取想HDFS文件的输出流
    FSDataOutputStream fos = fs.create(new Path("/copy_01.txt"));
    // 3. 从输入流想输出流写入数据
    IOUtils.copyBytes(fis, fos, conf);
    // 4. 关闭资源
    IOUtils.closeStream(fis);
    IOUtils.closeStream(fos);
}

8.10.2 I/O下载文件

// 使用IO流下载文件
@Test
public void IODownload() {
    // 1. 创建来自HDFS的输入流
    FSDataInputStream fis = fs.open(new Path("/copy_01.txt"));
    // 2. 创建写入到本地文件系统的输出流
    FileOutputStream fos = new FileOutputStream("c:/test/down.txt");
    // 3. 流的对拷贝
    IOUtils.copyBytes(fis, fos, conf);
    // 4. 关闭资源
    IOUtils.closeStream(fis);
    IOUtils.closeStream(fos);
}

Copyright © 尚硅谷大数据 2013-2019 all right reserved,powered by Gitbook
该文件最后修订时间: 2019-02-14 02:59:46

results matching ""

    No results matching ""