IO筆記

1.java.io包下

File類:java程序中的此類的一個(gè)對(duì)象阀湿,就對(duì)應(yīng)著硬盤中的一個(gè)文件或網(wǎng)絡(luò)中的一個(gè)資源蚁阳。
File file1 = new File("d:\io\helloworld.txt");
File file2 = new File("d:\io\io1");
1.File既可以表示一個(gè)文件(.doc .xls .mp3 .avi .jpg .dat)深浮,也可以表示一個(gè)文件目錄!
2.File類的對(duì)象是與平臺(tái)無(wú)關(guān)的。
3.File類針對(duì)于文件或文件目錄警绩,只能進(jìn)行新建、刪除盅称、重命名肩祥、上層目錄等等的操作。如果涉及到訪問文件的內(nèi)容缩膝,F(xiàn)ile
是無(wú)能為力的混狠,只能使用IO流下提供的相應(yīng)的輸入輸出流來(lái)實(shí)現(xiàn)。
4.常把File類的對(duì)象作為形參傳遞給相應(yīng)的輸入輸出流的構(gòu)造器中疾层!

2.IO 流的結(jié)構(gòu)

IO流體系

3.IO流的劃分

  1. 按照流的流向的不同:輸入流 輸出流 (站位于程序的角度)
  2. 按照流中的數(shù)據(jù)單位的不同:字節(jié)流 字符流 (純文本文件使用字符流 将饺,除此之外使用字節(jié)流)
  3. 按照流的角色的不同:節(jié)點(diǎn)流 處理流 (流直接作用于文件上是節(jié)點(diǎn)流(4個(gè)),除此之外都是處理流)

4.重點(diǎn)掌握

  • 抽象基類 節(jié)點(diǎn)流(文件流) 緩沖流(處理流的一種,可以提升文件操作的效率)
  • InputStream
    FileInputStream (int read(byte[] b)) BufferedInputStream (int read(byte[] b))
  • OutputStream
    FileOutputStream (void write(b,0,len)) BufferedOutputStream (flush()) (void write(b,0,len))
  • Reader
    FileReader (int read(char[] c)) BufferedReader (readLine()) (int read(char[] c))或String readLine()
  • Writer
    FileWriter (void write(c,0,len)) BufferedWriter (flush()) (void write(c,0,len)或void write(String str))
    注:
    1.從硬盤中讀入一個(gè)文件痛黎,要求此文件一定得存在予弧。若不存在,報(bào)FileNotFoundException的異常
    2.從程序中輸出一個(gè)文件到硬盤湖饱,此文件可以不存在掖蛤。若不存在,就創(chuàng)建一個(gè)實(shí)現(xiàn)輸出琉历。若存在坠七,則將已存在的文件覆蓋
    3.真正開發(fā)時(shí)水醋,就使用緩沖流來(lái)代替節(jié)點(diǎn)流
    4.主要最后要關(guān)閉相應(yīng)的流。先關(guān)閉輸出流彪置,再關(guān)閉輸入流拄踪。將此操作放入finally

5.其它的流

1.轉(zhuǎn)換流:實(shí)現(xiàn)字節(jié)流與字符流之間的轉(zhuǎn)換

InputStreamReader:輸入時(shí),實(shí)現(xiàn)字節(jié)流到字符流的轉(zhuǎn)換拳魁,提高操作的效率(前提是惶桐,數(shù)據(jù)是文本文件) ===>解碼:字節(jié)數(shù)組--->字符串

OutputStreamWriter:輸出時(shí),實(shí)現(xiàn)字符流到字節(jié)流的轉(zhuǎn)換潘懊。 ===>編碼: 字符串---->字節(jié)數(shù)組

例子:從鍵盤輸入字符串姚糊,要求將讀取到的整行字符串轉(zhuǎn)成大寫輸出。然后繼續(xù)進(jìn)行輸入操作授舟,直至當(dāng)輸入“e”或者“exit”時(shí)救恨,退出程序。

2.標(biāo)準(zhǔn)的輸入輸出流

System.in: The "standard" input stream:從鍵盤輸入數(shù)據(jù)
System.out:The "standard" output stream:從顯示器輸出數(shù)據(jù)

3.打印流 (都是輸出流) PrintStream(處理字節(jié)) PrintWriter(處理字符)

可以使用System.setOut(PrintStream p)重新設(shè)置一下輸出的位置释树。
PrintStream p = new PrintStream(new FileOutputStream("hello.txt"),true);

4.數(shù)據(jù)流(處理基本數(shù)據(jù)類型肠槽、String類、字節(jié)數(shù)組)

DataInputStream DataOutputStream

5.對(duì)象流(用來(lái)處理對(duì)象的)

對(duì)象的序列化機(jī)制:允許把內(nèi)存中的Java對(duì)象轉(zhuǎn)換成平臺(tái)無(wú)關(guān)的二進(jìn)制流奢啥,從而允許把這種二進(jìn)制流持久地保存在磁盤上秸仙,或通過(guò)網(wǎng)絡(luò)將這種二進(jìn)制流傳輸?shù)搅硪粋€(gè)網(wǎng)絡(luò)節(jié)點(diǎn)。當(dāng)其它程序獲取了這種二進(jìn)制流桩盲,就可以恢復(fù)成原來(lái)的Java對(duì)象

ObjectInputStream(Object readObject();) ObjectOutputStream (void writeObject(Object obj))

如何創(chuàng)建流的對(duì)象:ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("person.txt")));
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("person.txt")));

實(shí)現(xiàn)序列化機(jī)制的對(duì)象對(duì)應(yīng)的類的要求:
①要求類要實(shí)現(xiàn)Serializable接口
②同樣要求類的所有屬性也必須實(shí)現(xiàn)Serializable接口
③ 要求給類提供一個(gè)序列版本號(hào):private static final long serialVersionUID;
④屬性聲明為static 或transient的寂纪,不可以實(shí)現(xiàn)序列化

6.隨機(jī)存取文件流:RandomAccessFile

6.1既可以充當(dāng)一個(gè)輸入流,又可以充當(dāng)一個(gè)輸出流:public RandomAccessFile(File file, String mode)
6.2支持從文件的開頭讀取赌结、寫入捞蛋。若輸出的文件不存在,直接創(chuàng)建姑曙。若存在襟交,則是對(duì)原有文件內(nèi)容的覆蓋。
6.3 支持任意位置的“插入”伤靠。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末捣域,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子宴合,更是在濱河造成了極大的恐慌焕梅,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卦洽,死亡現(xiàn)場(chǎng)離奇詭異贞言,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)阀蒂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門该窗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)弟蚀,“玉大人,你說(shuō)我怎么就攤上這事酗失∫宥ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵规肴,是天一觀的道長(zhǎng)捶闸。 經(jīng)常有香客問我,道長(zhǎng)拖刃,這世上最難降的妖魔是什么删壮? 我笑而不...
    開封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮兑牡,結(jié)果婚禮上央碟,老公的妹妹穿的比我還像新娘。我一直安慰自己发绢,他們只是感情好硬耍,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著边酒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪狸窘。 梳的紋絲不亂的頭發(fā)上墩朦,一...
    開封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音翻擒,去河邊找鬼氓涣。 笑死,一個(gè)胖子當(dāng)著我的面吹牛陋气,可吹牛的內(nèi)容都是我干的劳吠。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼巩趁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼痒玩!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起议慰,我...
    開封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蠢古,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后别凹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體草讶,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年炉菲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了堕战。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坤溃。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖嘱丢,靈堂內(nèi)的尸體忽然破棺而出浇雹,到底是詐尸還是另有隱情,我是刑警寧澤屿讽,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布昭灵,位于F島的核電站,受9級(jí)特大地震影響伐谈,放射性物質(zhì)發(fā)生泄漏烂完。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一诵棵、第九天 我趴在偏房一處隱蔽的房頂上張望抠蚣。 院中可真熱鬧,春花似錦履澳、人聲如沸嘶窄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)柄冲。三九已至,卻和暖如春忠蝗,著一層夾襖步出監(jiān)牢的瞬間现横,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工阁最, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留戒祠,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓速种,卻偏偏與公主長(zhǎng)得像姜盈,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子配阵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

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

  • 概述 java.io 包幾乎包含了所有操作輸入馏颂、輸出需要的類。所有這些流類代表了輸入源和輸出目標(biāo)闸餐。java.io ...
    Steven1997閱讀 9,183評(píng)論 1 25
  • 一饱亮、基礎(chǔ)知識(shí):1、JVM舍沙、JRE和JDK的區(qū)別:JVM(Java Virtual Machine):java虛擬機(jī)...
    殺小賊閱讀 2,369評(píng)論 0 4
  • 剛剛失戀的女生拂铡,因?yàn)槲褪乔榫w的波動(dòng)壹无,也許你認(rèn)為好追葱绒,關(guān)鍵看你會(huì)不會(huì)用這個(gè)優(yōu)勢(shì)。 如果掌握不好斗锭,你有可能成為了備...
    伍阿哥漫畫閱讀 2,661評(píng)論 0 0
  • 黃桑地淀,一個(gè)富有詩(shī)意的名字。位于湖南綏寧縣境內(nèi)岖是,2013年被批準(zhǔn)為國(guó)家級(jí)自然保護(hù)區(qū)帮毁。 如果你想到詩(shī)意和遠(yuǎn)方去,想享受...
    小小佘閱讀 574評(píng)論 2 4
  • 看不到未來(lái)的戀愛遲早有一天要分手的豺撑,一切不過(guò)是時(shí)間的問題烈疚。但不管結(jié)局如何,都好好珍惜聪轿,不要辜負(fù)遇見爷肝。
    為獨(dú)行找個(gè)借口閱讀 160評(píng)論 0 0