InputStream之available()

541732025發表於2014-09-01

InputStream的available()方法返回此輸入流下一個方法呼叫可以不受阻塞地從此輸入流讀取(或跳過)的估計位元組數。下一個呼叫可能是同一個執行緒,也可能是另一個執行緒。一次讀取或跳過此估計數個位元組不會受阻塞,但讀取或跳過的位元組數可能小於該數。

注意,有些 InputStream 的實現將返回流中的位元組總數,但也有很多實現不會這樣做。試圖使用此方法的返回值分配緩衝區,以儲存此流所有資料的做法是不正確的。
JDK的解釋意味著,我們不能透過該方法來獲取InputStream的位元組大小進而據此大小來初始化緩衝區的大小。
那麼我們只能while迴圈read:

點選(此處)摺疊或開啟

  1. OutputStream out = new BufferedOutputStream(response.getOutputStream());
  2.         byte[] bytes = new byte[1024];
  3.         int len;
  4.         while ((len = in.read(bytes)) != -1) {
  5.             out.write(bytes, 0, len);
  6.         }
  7.         in.close();
  8.         out.flush();
  9.         out.close();


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28912557/viewspace-1261242/,如需轉載,請註明出處,否則將追究法律責任。

相關文章