關於Java的輸入輸出流(InputString,OutputString)

InputStream:我們在讀取網路流中數據的時候必須先得到InputStream,例如Java的URLConnection和Socket中都有

getInputStream()這個方法來獲取網路數據的輸入流。得到InputStream後,就可以讀取流中的數據,怎麼讀取呢?請看下文,有以下幾種類型的數據

(1)如果流中的數據只是字符串,那就很簡單,看下圖中的代碼,BufferedReader和InputStreamReader這兩個類的區別可以自己查看Java源代碼

(2)如果流中的數據是圖片,在android中的話就很簡單,android裏面有個圖片類BitmapFactory,裏面有個方法      DecodeStream(InputStream)就可以直接將流直接解碼還原成圖片文件。

(3)如果流中的數據也是文件(圖片或視頻或其他文件),並且需要把流寫入本地SD卡或繼續將流發送出去的話,這種情況下就需要與OutputStream結合在一起了,下面再繼續介紹OutputStream,並且一起探討這種情況。


OutputStream:如果我們需要把一些數據(字符串或文件)通過網絡發送出去或者寫進自己本機的中的時候,就必須得到OutputStream,得到OutputStream的方法有種情況: (1)如果要將數據寫入本地,則可以通過new FileOutputStream或ByteArrayOutputStream(反正都是OutputStream的子類,具體用法可以查看Java源代碼或API)來得到寫入文件的輸入流;(2)如果要將數據通過網絡發送出去,在Java中則有HttpUrlConnection和Socket中的getOutputStream()方法來獲取相應的輸出流。

獲取了OutputStream後,就可以通過write(byte[] buffer)或write(byte[] buffer, int offset, int count)這兩個方法將數據寫進流中了,寫進流中一般是一字節數組的方式寫入。


回到InputStream的第三種情況,讀取InputStream,一般通過read方法用一個while循環就可以讀取出來,同時在循環的過程中,需要將每次循環讀取出來的結果寫進OutputStream,看如下代碼



這樣就可以把數據寫進相應的輸出流。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章