立即注册 登录
About云-梭伦科技 返回首页

sstutu的个人空间 https://www.aboutyun.com/?70 [收藏] [复制] [分享] [RSS]

日志

IOUtils.copyBytes的简单例子

已有 2140 次阅读2014-8-28 22:17


IOUtils.copyBytes可以方便地将数据写入到文件,不需要自己去控制缓冲区,也不用自己去循环读取输入源。

import java.io.BufferedInputStream;
import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

public class IOUtilsDemo {
    public static void main(String[] args) throws IOException {
        BufferedInputStream is = new BufferedInputStream(System.in);
        FileSystem fs = FileSystem.get(new Configuration());
        Path outputPath = new Path("hdfs://xxyy:9000" + args[0]);
        FSDataOutputStream os = fs.create(outputPath);
        // 参数说明
        // is - 输入源
        // os - 输出源
        // 4096 - 缓冲区大小
        // true - 是否关闭数据流,如果是false,就在finally里关掉
        //        IOUtils.closeStream(is);
        //        IOUtils.closeStream(os);
        IOUtils.copyBytes(is, os, 4096, true);
        System.out.println("Created file " + outputPath + " of length " +
            fs.getFileStatus(outputPath).getLen() + " bytes.");
    } // END: main 
} // END: IOUtilsDemo

示例:
[dwapp@dw-dhw3-1 yaoyao.zhangyy]$ ls -lrth a.dat
-rw-rw-r-- 1 dwapp dwapp 485M May 13 15:58 a.dat
[dwapp@dw-dhw3-1 yaoyao.zhangyy]$ cat a.dat | java IOUtilsDemo /group/alidw/dhwdata1/ae/odl/ae01/wps11.dat 
Created file hdfs://xxyy:9000/group/alidw/dhwdata1/ae/odl/ae01/wps11.dat of length 508310840 bytes.
[dwapp@dw-dhw3-1 yaoyao.zhangyy]$ hadoop fs -ls /group/alidw/dhwdata1/ae/odl/ae01/wps11.dat 
Found 1 items
-rw-r--r--   3 dwapp cug-alidw  508310840 2013-05-13 16:29 /group/alidw/dhwdata1/ae/odl/ae01/wps11.dat






路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

关闭

推荐上一条 /2 下一条