簡體   English   中英

如何在Java中將輸入流連接到輸出流?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM