IOUtils.copyBytes()メソッド

1490 ワード

IOUtils.copyBytes()メソッド:IOUtils.copyBytes(in,out,4096,false)--in:FSDataInputStreamクラスのオブジェクトであり、ファイルの読み取りに関するクラス、いわゆる「入力ストリーム」--out:FSDataOutputStreamクラスのオブジェクトであり、ファイルの書き込みに関するクラス、すなわち「出力ストリーム」--4096はコピーに使用するbufferサイズ(bufferはバッファ)--バッファサイズ--//true-データストリームを閉じるかどうか、falseであればfinallyでimportjavaをオフにする.io.BufferedInputStream;
importjava.io.IOException;
importorg.apache.hadoop.conf.Configuration;
importorg.apache.hadoop.fs.FSDataOutputStream;
importorg.apache.hadoop.fs.FileSystem;
importorg.apache.hadoop.fs.Path;
importorg.apache.hadoop.io.IOUtils;
publicclassIOUtilsDemo {
publicstaticvoidmain(String[] args)throwsIOException {
BufferedInputStream is =newBufferedInputStream(System.in);
FileSystem fs = FileSystem.get(newConfiguration());
Path outputPath =newPath("[hdfs://xxyy:9000](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

プロジェクトでは、私のinとoutはFileSystemクラスin=locationFileSystemを通じています.open(path); out=fs.create(block); locationFileSystemとfsはいずれもFileSystemクラスのオブジェクトであり、pathとblockはパスPathクラスのオブジェクトであり、IOUtilsである.copyBytes(in,out,4096,false)法によりファイルのマージとhdfsへのアップロードを実現