簡體   English   中英

Java輸入流比輸出流快

[英]Java inputstream faster than outputstream

我對Java I / O流有些困惑。 我有一種情況,我的Inputstream速度非常快(例如從磁盤讀取文件),但是我的outputstream卻非常慢(例如寫入http servlet響應輸出流)。

如果我的文件很大,最終我的輸出流(通過管道傳輸到文件的輸入流)會拋出任何與內存相關的異常並關閉該流,該怎么辦? 否則我的outputstream寫入方法將被阻塞,直到清除outputstream數據為止?

輸出流是否可能已滿?

public void pipe(InputStream is, OutputStream os) throws IOException {
  int n;
  byte[] buffer = new byte[1024];
  while((n = is.read(buffer)) > -1) {
    os.write(buffer, 0, n);   // would this get blocked if outputstream is full?
  }
 os.close ();
}

是的,OutpuStream將阻塞直到對基礎系統(文件系統,網絡套接字等)的寫入完成。 如果OutpuStream實際上是BufferedOutputStream,則將有一些緩沖,但是最后,如果緩沖區已滿,它將仍然阻塞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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