- 主要就是對(duì)各種輸入輸出流使用的總結(jié)
- 字節(jié)流使用情況:對(duì)流中的數(shù)據(jù)以字節(jié)為單位進(jìn)行讀取寫入操作,不關(guān)心內(nèi)容
- 字符流使用情況:對(duì)流中的數(shù)據(jù)以字符為單位進(jìn)行讀取和寫入
字節(jié)流
字節(jié)輸入流 InputStream
InputStream 抽象類
---- FileInputStream
----------BufferedInputStream
----------DataInputStream
---- ByteArrayInputStream
---- ObjectInputStream
FileInputStream
FileInputStream(File file);
FileInputStream 對(duì)文件進(jìn)行讀取的流庭瑰,構(gòu)造方法的參數(shù)為一個(gè) File 對(duì)象咧织,或者 File 的路徑 辐烂,不能使用 InputStream 對(duì)象來(lái)構(gòu)造 FileInputStream
主要方法:
int read();
int read(byte[]);
int read(bytep[],int,int)
這幾個(gè)重載的讀取方法虎囚,返回的都是一個(gè) int 值
第一個(gè)方法每次讀一個(gè)字節(jié)调煎,返回值就是讀取到的字節(jié)横缔,如果讀不到時(shí)返回 -1
后面的兩個(gè)方法也是每次讀一個(gè)字節(jié)铺遂,但是會(huì)把讀到的字節(jié)存到 byte 數(shù)組中,返回值為讀取到的字節(jié)數(shù)茎刚,如果讀不到時(shí)返回 -1
BufferedInputStream
BufferedInputStream(InputStream inputStream);
構(gòu)造方法是一個(gè) InputStream 襟锐,一般在使用流傳遞時(shí)會(huì)從別的地方得到一個(gè) InputStream 對(duì)象,即可創(chuàng)建 BufferedInputStream 對(duì)象
BufferedInputStream 是 FileInputStream 的子類膛锭,是具有緩存功能的字節(jié)輸入流
主要方法:
int read();
int read(byte[]);
int read(bytep[],int,int)
如果 read 方法不使用參數(shù)時(shí)為一次讀取一個(gè)字節(jié)粮坞,返回值為讀取到的 byte 字節(jié)蚊荣,讀不到時(shí)返回 -1
后面兩個(gè)方法會(huì)將讀取到的數(shù)據(jù)緩存在一個(gè) byte[] 字節(jié)數(shù)組中,只讀滿時(shí)或讀取結(jié)束時(shí)返回莫杈,返回值表示讀取到的字節(jié)數(shù)互例,讀不到時(shí)返回 -1
DataInputStream
DataInputStream(InputStream in);
DataInputStream 用來(lái)處理純文本時(shí)使用,定義了對(duì)各種基本類型的寫入操作筝闹,構(gòu)造參數(shù)為一個(gè) InputStream媳叨,要保證該 InputStream 流中的數(shù)據(jù)為二進(jìn)制的
主要方法:
int read(byte[]);
int readInt();
double readDouble();
...
ByteArrayInputStream
ByteArrayInputStream(byte[]);
ByteArrayInputStream(byte[],int,int);
ByteArrayInputStream 構(gòu)造方法的參數(shù)為將一個(gè)字節(jié)數(shù)組寫入自己的緩沖區(qū),緩沖區(qū)也是一個(gè)字節(jié)數(shù)組关顷,并使用 read 方法先問(wèn)提供接口糊秆。
主要方法:
int read(byte[]);
int read(byte[],int,int);
read 方法會(huì)將自己內(nèi)部緩沖區(qū)的數(shù)組寫入到參數(shù)中的數(shù)組中,返回值為讀取到的字節(jié)的數(shù)量,讀不到時(shí)返回 -1
ObjectInputStream
ObjectInputStream(InputStream in)
ObjectInputStream 構(gòu)造方法參數(shù)為一個(gè) InputStream 對(duì)象议双,用來(lái)讀取流中序列化后的數(shù)據(jù)
主要方法:
readInt();
readBoolean()
...
readObject();
方法的作用為讀出流中序列化后的數(shù)據(jù)痘番,并自動(dòng)反序列化成指定對(duì)象,該對(duì)象必須是可序列化的
字節(jié)輸出流
OutputStream 抽象類
---- FileOutputStream 構(gòu)造方法參數(shù)為文件或路徑平痰,boolean 的參數(shù)表示是否追加操作汞舱,默認(rèn)為 false,如果文件不存在還好直接創(chuàng)建文件觉增,將數(shù)據(jù)以字節(jié)的形式寫出到文件
---------- BufferedOutputStream 構(gòu)造方法參數(shù)為 OutputStream 兵拢,write 系列方法將數(shù)據(jù)以字節(jié)數(shù)組的的形式寫出到構(gòu)造參數(shù)中傳入的流,一般參數(shù)中的數(shù)組為在輸入流中讀到的數(shù)組逾礁,在寫入完成之后说铃,需要調(diào)用 flush() 方法,保證將緩存中的數(shù)據(jù)寫出
---------- DataOutputStream 構(gòu)造方法參數(shù)為 OutputStream嘹履,用來(lái)將二進(jìn)制數(shù)據(jù)寫出到流腻扇,write 系列的方法來(lái)執(zhí)行寫除操作
---- ByteArrayOutputStream 構(gòu)造不需要參數(shù),作用為將數(shù)據(jù)以字節(jié)數(shù)組的形式寫出到自己的緩沖區(qū)砾嫉,一般 write 系列的參數(shù)都是輸入流幼苛,從輸入流中拿到數(shù)據(jù)寫入到自己的緩沖區(qū),緩沖區(qū)的數(shù)據(jù)可以通過(guò) toString 方法輸出焕刮,writeTo 方法為將字節(jié)數(shù)組數(shù)據(jù)寫出到輸出流
---- ObjectOutputStream 構(gòu)造方法為一個(gè) OutPutStream 舶沿,作用為將可以序列化的對(duì)象完成序列化后的數(shù)據(jù)寫出到流,并由輸出流再進(jìn)行寫出
字符流
字符輸入流 Reader
Reader 抽象類
---- InputStreamReader
--------- FileReader
---- BufferedReader
InputStreamReader
InputStreamReader(InputStream in)
構(gòu)造方法需要傳一個(gè) InputStream配并,作用為讀出從字節(jié)輸入流中傳來(lái)的數(shù)據(jù)括荡。字節(jié)流轉(zhuǎn)換為字符流
主要方法:
int read();
int read(char[],int,int);
第一個(gè)方法會(huì)讀出一個(gè)字符,返回值為讀出的字符溉旋,讀不到返回 -1
第二個(gè)和第三個(gè)方法會(huì)將讀到的數(shù)據(jù)緩存到 char[] 字符數(shù)組中畸冲,返回值為讀到的字符的數(shù)量,讀不到返回 -1
FileReader
FileReader(String);
FileReader(File);
構(gòu)造方法的參數(shù)為一個(gè) File 文件或文件的路徑,F(xiàn)ileReader 繼承自 InputStreamReader邑闲,作用為建立來(lái)自 File 文件的字符流,其他的字符流都不能由 File 文件取得
BufferdReader
BufferedReader(Reader reader);
構(gòu)造方法需要一個(gè) Reader 字符輸入流算行,操作文件油 FileReader 獲得對(duì)文件的訪問(wèn),或者由 InputStreamReader 作為參數(shù)苫耸,操作字節(jié)流轉(zhuǎn)換成的字符流州邢,在網(wǎng)絡(luò)請(qǐng)求時(shí)經(jīng)常這樣使用
主要方法:
int read(); 讀取一個(gè)字符,返回值為讀取到的字符鲸阔,讀不到返回 -1
int read(char[],int,int); 緩沖字符流偷霉,將讀到的數(shù)據(jù)緩沖到 char[] 字符數(shù)組中咏雌,返回值為讀取到的字符的數(shù)量捕透,讀不到返回 -1
String readln(boolean); 讀取一行鬼佣,參數(shù)表示是否跳過(guò)換行枣接,如果為 false 行末自動(dòng)添加 \n 換行符纳决,為 true 則表示不加換行符
String readln(); 參數(shù)默認(rèn)為 false
Writer 字符輸出流
Writer 抽象類
---- OutputStreamWriter
---------- FileWriter
---- BufferedWriter
---- PrintWriter
OutputStreamWriter
OutputStreamWriter(OutputStream out)
構(gòu)造函數(shù)的參數(shù)為一個(gè) OutputSteram 對(duì)象盹舞,由子節(jié)流轉(zhuǎn)換為字符流娄昆,將數(shù)據(jù)按照字符數(shù)據(jù)寫出
主要方法:
write(int c); 寫出一個(gè)單字符
write(char[],int,int); 寫出一個(gè)字符數(shù)組
write(String,int,int); 寫出一個(gè)字符串
FileWriter
FileWriter(String);
FileWriter(File);
FileWriter(String,boolean);
FileWriter(File,boolean);
構(gòu)造函數(shù)為一個(gè) file 或路徑泽西,boolean 表示是否追加操作晃痴,默認(rèn)問(wèn) false 残吩,即刪除原有數(shù)據(jù),重新寫入
BufferedWriter
BufferedWriter (Writer)
構(gòu)造方法需要一個(gè) Writer 類型的參數(shù)倘核,一般網(wǎng)絡(luò)請(qǐng)求時(shí)由 OutputStream 得到 OutputStreamReader
在操作文件時(shí)使用 FileWriter 來(lái)構(gòu)造 BufferedReader
主要方法:
write(int c); 寫出一個(gè)單字符
write(char[],int,int); 寫出一個(gè)字符數(shù)組
write(String,int,int); 寫出一個(gè)字符串
flush(); 保證緩沖的數(shù)據(jù)成功寫出
PrintWriter
PrintWriter(Writer);
PrintWriter(File);
PrintWriter(String);
PrintWriter(File,boolean);
PrintWriter(OutputSteam,boolean);
...
構(gòu)造方法很多泣侮,主要為 Writer、File 文件紧唱、路徑活尊、OutputStream 來(lái)構(gòu)建
主要方法:
write(int c); 寫出一個(gè)單字符
write(char[],int,int); 寫出一個(gè)字符數(shù)組
write(String,int,int); 寫出一個(gè)字符串
print(基本類型、String漏益、Object); 最后都將轉(zhuǎn)為 print(String) 在轉(zhuǎn)化為 write(String);
println(基本類型蛹锰、String、Object); 寫出一行
flush(); write 系列方法之后必須調(diào)用绰疤,必須铜犬,保證緩沖的數(shù)據(jù)成功寫出
...