1萎河、在java中stream代表一種數(shù)據(jù)流擎椰,JavaIO的底層數(shù)據(jù)元(想像成水龍頭)
2巩搏、任何有能力產(chǎn)生數(shù)據(jù)流的JavaIO對(duì)象就可以看作是一個(gè)InputStream對(duì)象
既然它能產(chǎn)生出數(shù)據(jù)丰辣,我們就可以調(diào)用read()方法杖玲,讀取它輸入過來的數(shù)據(jù)--(資源對(duì)象輸入數(shù)據(jù)進(jìn)入我們的程序)
3、任何有能力接收數(shù)據(jù)流的JavaIO對(duì)象我們就可以看作是一個(gè)OutputStream對(duì)象
同樣,它能接收數(shù)據(jù)进肯,我們就可以調(diào)用它的write方法环形,來讓它接收數(shù)據(jù)--(我們的程序輸出數(shù)據(jù)進(jìn)入資源對(duì)象)
4任洞、當(dāng)然,我們可以在Inputstream和OutputStream數(shù)據(jù)源的基礎(chǔ)上见秽,從實(shí)際需要觸發(fā),
來重新封裝出不同性能機(jī)制的輸入、輸出流
基于字節(jié)流的stream:
DataOutputStream----DataInputStream
FileOutputStream-----FileInputStream
基于字符流的stream(典型的以writer和reader來標(biāo)識(shí)的):
FileWriter---FileReader
StringWriter---StringReader
OutputStream的基本作業(yè)流程:
(1)輸出數(shù)據(jù)
void write(int b)往流中寫一個(gè)字節(jié)b
void write(byte b[])往流中寫一個(gè)字節(jié)數(shù)組b
void write(byte b[],int off,int len)把字節(jié)數(shù)組b中從下標(biāo)off開始误澳,長度為len的字節(jié)寫入流中
(2)刷空流
flush()刷空輸出流宦赠,并輸出所有被緩存的字節(jié)
由于某些流支持緩存功能桅滋,該方法將把緩存中所有內(nèi)容強(qiáng)制輸出到流中。
(3)關(guān)閉流
close()流操作完畢后必須關(guān)閉。
InputStream同理
裝飾者模式:
//讀取的文件如果是文本文件蓝仲,就要將字節(jié)流包裝成字符流咱揍。
由于每個(gè)字節(jié)對(duì)應(yīng)的字符可能不同,所以指定文本編碼UTF-8硼砰,避免亂碼豹障。
進(jìn)一步包裝成BufferedReader血公,就可以調(diào)用其readLine函數(shù),就可以一行一行的讀。
InputStream is = getResources().getAssets().open("info.txt");
InputStreamReader isr = new InputStreamReader(is,"UTF-8");
BufferedReader bfr = new BufferedReader(isr);