IOUtils.copyBytes()方法

IOUtils.copyBytes()方法:
IOUtils.copyBytes(in, out, 4096, false)
--in:是FSDataInputStream類的對象,是有關(guān)讀取文件的類,也就是所謂“輸入流”
--out:是FSDataOutputStream類的對象,是有關(guān)文件寫入的類,也就是“輸出流”
--4096表示用來拷貝的buffer大?。╞uffer是緩沖區(qū))--緩沖區(qū)大小
--// true - 是否關(guān)閉數(shù)據(jù)流,如果是false,就在finally里關(guān)掉
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);
// 參數(shù)說明
// is - 輸入源
// os - 輸出源
// 4096 - 緩沖區(qū)大小
// true - 是否關(guān)閉數(shù)據(jù)流,如果是false,就在finally里關(guān)掉
//        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)方法實現(xiàn)了文件合并及上傳至hdfs上

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容