[英]How to connect a input stream to a output stream in Java?
具有InputStream和OutputStream。
我想連接他們。
我想做的是從InputStream讀取數據。
然后使用OutputStream輸出相同的數據。
這是我的代碼。
byte[] b = new byte[8192];
while((len = in.read(b, 0, 8192)) > 0){
out.write(b, 0, len);
}
有什么方法可以連接它們嗎?
還是有沒有緩沖的輸入和輸出數據的方法?
輸入流和輸出流都是被動對象,因此如果不創建線程將數據從一個復制到另一個,就無法連接它們。
注意:NIO有一個transferTo
方法,盡管它的功能大致相同,但效率更高。
您不必使用緩沖區,但是如果沒有緩沖區,它可能會非常慢。
Guava和Apache Commons具有復制方法:
ByteStreams.copy(input, output);
IOUtils.copy(input ,output);
他們不會直接“連接”它們。 要實現我假設的目標,請創建一個InputStream
裝飾器類,該類將讀取的所有內容寫入OutputStream
。
您可以使用NIO通道/緩沖區
try (FileChannel in = new FileInputStream(inFile).getChannel();
FileChannel out = new FileOutputStream(outFile).getChannel())
{
ByteBuffer buff = ByteBuffer.allocate(8192);
int len;
while ((len = in.read(buff)) > 0) {
buff.flip();
out.write(buff);
buff.clear();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.