Java I/O操作

  • 主要就是對(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ù)成功寫出
...
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市轻庆,隨后出現(xiàn)的幾起案子癣猾,更是在濱河造成了極大的恐慌,老刑警劉巖余爆,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件煎谍,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡龙屉,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)转捕,“玉大人作岖,你說(shuō)我怎么就攤上這事∥逯ィ” “怎么了痘儡?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)枢步。 經(jīng)常有香客問(wèn)我沉删,道長(zhǎng),這世上最難降的妖魔是什么醉途? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任矾瑰,我火速辦了婚禮,結(jié)果婚禮上隘擎,老公的妹妹穿的比我還像新娘殴穴。我一直安慰自己,他們只是感情好货葬,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布采幌。 她就那樣靜靜地躺著,像睡著了一般震桶。 火紅的嫁衣襯著肌膚如雪休傍。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天蹲姐,我揣著相機(jī)與錄音磨取,去河邊找鬼。 笑死淤堵,一個(gè)胖子當(dāng)著我的面吹牛寝衫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拐邪,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼慰毅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了扎阶?” 一聲冷哼從身側(cè)響起汹胃,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎东臀,沒(méi)想到半個(gè)月后着饥,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡惰赋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年宰掉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了呵哨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡轨奄,死狀恐怖孟害,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挪拟,我是刑警寧澤挨务,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站玉组,受9級(jí)特大地震影響谎柄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜惯雳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一朝巫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吨凑,春花似錦捍歪、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至恩商,卻和暖如春变逃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背怠堪。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工揽乱, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人粟矿。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓凰棉,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親陌粹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子撒犀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • tags:io categories:總結(jié) date: 2017-03-28 22:49:50 不僅僅在JAVA領(lǐng)...
    行徑行閱讀 2,168評(píng)論 0 3
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法掏秩,內(nèi)部類的語(yǔ)法或舞,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法蒙幻,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,587評(píng)論 18 399
  • 在經(jīng)過(guò)一次沒(méi)有準(zhǔn)備的面試后映凳,發(fā)現(xiàn)自己雖然寫了兩年的android代碼,基礎(chǔ)知識(shí)卻忘的差不多了邮破。這是程序員的大忌诈豌,沒(méi)...
    猿來(lái)如癡閱讀 2,834評(píng)論 3 10
  • 最近一個(gè)星期仆救,我和家人看到一個(gè)到廣州發(fā)展的機(jī)會(huì),于是队询,拋棄所有安全感派桩,我們來(lái)到這座陌生的城市,開(kāi)啟我們的未來(lái)之路蚌斩。...
    桃子_9d34閱讀 216評(píng)論 1 1
  • 三星NOTE開(kāi)創(chuàng)了智能手機(jī)大屏幕時(shí)代,到目前為止范嘱,已經(jīng)很少有4寸及以下的產(chǎn)品問(wèn)世了送膳。 大屏幕帶來(lái)的優(yōu)點(diǎn)不用細(xì)說(shuō)。大...
    回車_閱讀 417評(píng)論 0 2