流是個抽象的概念,是對輸入輸出裝置的抽象,輸入流可以看作乙個輸入通道,輸出流可以看作乙個輸出通道。
輸入流是相對程式而言的,外部傳入資料給程式需要借助輸入流。
輸出流是相對程式而言的,程式把資料傳輸到外部需要借助輸出流。
什麼是位元組流?
位元組流--傳輸過程中,傳輸資料的最基本單位是位元組的流。
什麼是字元流?
字元流--傳輸過程中,傳輸資料的最基本單位是字元的流。
讀資料的時候,如果我們需要去「看資料」,那麼位元組流的資料需要指定字元編碼方式,這樣我們才能看到我們能識別的字元;而字元流,因為已經選擇好了字元編碼方式,通常不需要再改了(除非定義的字元編碼方式與資料原有的編碼方式不一致!)
常用的位元組輸入流主要有:
inputstream
fileinputstream
bufferedinputstream 【bufferedinputstream不是inputstream的直接實現子類,是filterinputstream的子類】
outputstream的使用方法
bufferedoutputstream 【bufferedoutputstream不是outputstream的直接實現子類,是filteroutputstream的子類】
使用方法
reader是字元輸入流的抽象基類 ,它定義了以下幾個函式:
read() :讀取單個字元,返回結果是乙個int,需要轉成char;到達流的末尾時,返回-1
read(char cbuf):讀取cbuf的長度個字元到cbuf這種,返回結果是讀取的字元數,到達流的末尾時,返回-1
close() :關閉流,釋放占用的系統資源。
inputstreamreader 可以把inputstream中的位元組資料流根據字元編碼方式轉成字元資料流。它除了可以使用基類定義的函式,它自己還實現了以下函式:
read(char cbuf, int offset, int length) :從offset位置開始,讀取length個字元到cbuf中,返回結果是實際讀取的字元數,到達流的末尾時,返回-1
filereader 可以把fileinputstream中的位元組資料轉成根據字元編碼方式轉成字元資料流。
bufferedreader可以把字元輸入流進行封裝,將資料進行緩衝,提高讀取效率。它除了可以使用基類定義的函式,它自己還實現了以下函式:
read(char cbuf, int offset, int length) :從offset位置開始,讀取length個字元到cbuf中,返回結果是實際讀取的字元數,到達流的末尾時,返回-1
readline() :讀取乙個文字行,以行結束符作為末尾,返回結果是讀取的字串。如果已到達流末尾,則返回 null
writer
outputstreamwriter
filewriter
bufferedwriter
writer是字元輸出流的抽象基類, ,它定義了以下幾個函式
write(char cbuf) :往輸出流寫入乙個字元陣列。
write(int c) :往輸出流寫入乙個字元。
write(string str) :往輸出流寫入一串字串。
write(string str, int off, int len) :往輸出流寫入字串的一部分。
close() :關閉流,釋放資源。 【這個還是抽象的,寫出來是說明有這個關閉功能】
flush():重新整理輸出流,把資料馬上寫到輸出流中。 【這個還是抽象的,寫出來是說明有這個關閉功能】
outputstreamwriter可以使我們直接往流中寫字串資料,它裡面會幫我們根據字元編碼方式來把字元資料轉成位元組資料再寫給輸出流,它相當於乙個中介\橋梁。
filewriter與outputstreamwriter功能類似,我們可以直接往流中寫字串資料,filewriter內部會根據字元編碼方式來把字元資料轉成位元組資料再寫給輸出流。
bufferedwriter比filewriter還高階一點,它利用了緩衝區來提高寫的效率。它還多出了乙個函式:
newline() :寫入乙個換行符
outputstreamwriter:是writer的子類。將輸出的字元流變成位元組流:即將字元流的輸入物件變成位元組流輸入物件。
inputstreamreader:是reader的子類。將輸入的位元組流變成字元流,即將乙個位元組流的輸入物件變成字元流輸入物件。
而字元的輸入流雖然是以字元的形式操作,但是還是使用了位元組流,也就是說,在傳輸或者從檔案讀取資料的時候,檔案裡真正儲存的資料永遠是位元組。
bytearrayinputstream的用法
部分資料來自
第十周課程總結
位元組流與字元流基本操作 程式需要資料的時候要使用輸入流讀取資料,程式需要將一些資料儲存起來的時候就要使用輸出流完成 位元組流在位元組流中輸出資料主要使用outoutstream類完成,輸入使用inputstream類,在字元流中輸出主要是使用writer類完成,輸入主要是 reader 類完成 o...
第十周課程總結
輸出資料 outputstream類 輸入資料 inputstream類 輸出資料 writer類 輸入資料 reader類 1使用file類開啟乙個檔案 2通過位元組流或字元流的子類,指定輸出的位置 3進行讀 寫操作 4關閉輸入 輸出 outputstreamwriter類 writer的子類,將...
第十周課程總結
package j a7 import j a.io.public class demo out.close file f2 new file d file.separator file.separator demo.txt 宣告file物件 inputstream input null 準備好乙個...