天天看點

IO重要了解及筆記

補遺(2014年1月23日21:17:53)

<a target="_blank" href="http://blog.csdn.net/lfdfhl/article/details/8195375">http://blog.csdn.net/lfdfhl/article/details/8195375</a>

注意輸出流的了解:它都是把資料寫到輸出流裡面.

參見該部落格的一些說明.

既然把資料寫在了輸出流裡面了.那麼它一定是有用的!那麼它不可能一直呆在輸出流裡面,這樣的話一點實際意義都沒有了.

至于在輸出流裡的資料怎麼用,用在哪裡.當然要看實際情況了.

無非是兩種:

1 第一種情況.輸出流和硬碟打交道.輸出流和硬碟或者SD卡連在一起的.比如例子中的複制照片的.

  即代碼fos=new FileOutputStream("F:\\2.JPG"); 

  然後把位元組數組裡面的資料寫到了輸出流即代碼  fos.write(temp1, 0, length);

  因為這個輸出流直接聯系的是以資料直接就到了硬碟了.

2 第二種情況.輸出流和記憶體打交道.

  比如例子中關于Bitmap顯示網絡圖檔的例子.

  這個時候在記憶體中要使用輸入流的資料.于是把輸入流的資料寫入到了輸出流

  準确地來說是一個ByteArrayOutputStream位元組數組輸出流.

  ByteArrayOutputStream的目的就是在記憶體中建立緩沖區,也就是把資料都儲存在了記憶體中的ByteArrayOutputStream.

  然後我們可以用outputStream.toByteArray()把資料儲存到了記憶體中的位元組數組中.

  我們看一下OutputStream的子類 ByteArrayOutputStream, FileOutputStream, FilterOutputStream, ObjectOutputStream,

OutputStream, PipedOutputStream

  其實常用的就是前兩個ByteArrayOutputStream, FileOutputStream 分别對應于記憶體和硬碟的操作.

  在資料:http://blog.sina.com.cn/s/blog_4c1c2d43010007sg.html中提到:

  OutputStream的類決定了輸出所要去往的目标,這個目标包括I.位元組數組 II.檔案 III.管道

  我覺得這個說法還是挺形象和準确的.



繼續閱讀