IO流

文件的幾種創(chuàng)建方式和刪除:

IO流的概念:

IO流用來(lái)處理設(shè)備之間的數(shù)據(jù)傳輸

Java對(duì)數(shù)據(jù)的操作是通過(guò)流的方式

Java用于操作流的類都在IO包中

流按流向分為兩種:輸入流创泄,輸出流。

流按操作類型分為兩種:

字節(jié)流 : 字節(jié)流可以操作任何數(shù)據(jù),因?yàn)樵谟?jì)算機(jī)中任何數(shù)據(jù)都是以字節(jié)的形式存儲(chǔ)的

字符流 : 字符流只能操作純字符數(shù)據(jù)铃在,比較方便。

java中流的體系圖:

IO流常用父類:

字節(jié)流的抽象父類:InputStream? ? ? ? ??OutputStream

字符流的抽象父類:Reader? ? ? ? ? ? ? ? ? ?Writer

IO流中的輸入輸出流以及流的關(guān)閉

關(guān)流的正確方式:

輸入流與輸出流的區(qū)別:當(dāng)你去輸出的時(shí)候疤剑,文件不存在會(huì)幫我們自動(dòng)創(chuàng)建白热,當(dāng)我們?nèi)ポ斎氲臅r(shí)候,文件不存在就會(huì)報(bào)錯(cuò)

文件的賦值:

例1:一個(gè)一個(gè)字節(jié)存(很慢)

例2:用數(shù)組存放:

flush和close方法的區(qū)別

flush()方法

用來(lái)刷新緩沖區(qū)的,刷新后可以再次寫(xiě)出

close()方法

用來(lái)關(guān)閉流釋放資源的的,如果是帶緩沖區(qū)的流對(duì)象的close()方法,不但會(huì)關(guān)閉流,還會(huì)再關(guān)閉流之前刷新緩沖區(qū),關(guān)閉后不能再寫(xiě)出

文件加密:

文件追加

BufferedInputStream/BufferOutputStream(僅作了解)

A:緩沖思想

字節(jié)流一次讀寫(xiě)一個(gè)數(shù)組的速度明顯比一次讀寫(xiě)一個(gè)字節(jié)的速度快很多叨粘,

這是加入了數(shù)組這樣的緩沖區(qū)效果,java本身在設(shè)計(jì)的時(shí)候瘤睹,

B.BufferedInputStream

BufferedInputStream內(nèi)置了一個(gè)緩沖區(qū)(數(shù)組)

從BufferedInputStream中讀取一個(gè)字節(jié)時(shí)

BufferedInputStream會(huì)一次性從文件中讀取8192個(gè), 存在緩沖區(qū)中, 返回給程序一個(gè)

程序再次讀取時(shí), 就不用找文件了, 直接從緩沖區(qū)中獲取

直到緩沖區(qū)中所有的都被使用過(guò), 才重新從文件中讀取8192個(gè)

C.BufferedOutputStream

BufferedOutputStream也內(nèi)置了一個(gè)緩沖區(qū)(數(shù)組)

程序向流中寫(xiě)出字節(jié)時(shí), 不會(huì)直接寫(xiě)到文件, 先寫(xiě)到緩沖區(qū)中

直到緩沖區(qū)寫(xiě)滿, BufferedOutputStream才會(huì)把緩沖區(qū)中的數(shù)據(jù)一次性寫(xiě)到文件里

D.拷貝的代碼

```java FileInputStream fis = new FileInputStream("致青春.mp3");

//創(chuàng)建文件輸入流對(duì)象,關(guān)聯(lián)致青春.mp3

BufferedInputStream bis = new BufferedInputStream(fis);

//創(chuàng)建緩沖區(qū)對(duì)fis裝飾

FileOutputStream fos = new FileOutputStream("copy.mp3");

//創(chuàng)建輸出流對(duì)象,關(guān)聯(lián)copy.mp3

BufferedOutputStream bos = new BufferedOutputStream(fos);

//創(chuàng)建緩沖區(qū)對(duì)fos裝飾

int b;

while((b = bis.read()) != -1) {

????????????bos.write(b);

}

bis.close();

//只關(guān)裝飾后的對(duì)象即可 bos.close(); ```

E.小數(shù)組的讀寫(xiě)和帶Buffered的讀取哪個(gè)更快?

定義小數(shù)組如果是8192個(gè)字節(jié)大小和Buffered比較的話

定義小數(shù)組會(huì)略勝一籌,因?yàn)樽x和寫(xiě)操作的是同一個(gè)數(shù)組

而B(niǎo)uffered操作的是兩個(gè)數(shù)組

對(duì)象輸入流:(創(chuàng)建對(duì)象不一定會(huì)調(diào)用構(gòu)造器升敲,調(diào)用構(gòu)造器一定會(huì)創(chuàng)建對(duì)象)

將對(duì)象寫(xiě)入流里面這個(gè)過(guò)程稱為序列化,如果一個(gè)對(duì)象要序列化那么這個(gè)對(duì)象的類就必須實(shí)現(xiàn)序列化接口Serializable 的類所產(chǎn)生的對(duì)象才能夠?qū)懭肓?/b>

當(dāng)把一個(gè)容器序列化轰传,那么該容器的數(shù)據(jù)也會(huì)被序列化

如果一個(gè)對(duì)象要序列化那么這個(gè)對(duì)象的類就必須實(shí)現(xiàn)序列化接口

只有實(shí)現(xiàn)了序列化接口的類所產(chǎn)生的對(duì)象才能寫(xiě)入流

從流中將對(duì)象讀取出來(lái)的過(guò)程被稱為反序列化驴党,不會(huì)去調(diào)用對(duì)象的構(gòu)造器?

序列化與反序列化:

? ??????序列化:將對(duì)象轉(zhuǎn)換成字節(jié)序列

? ? ? ? 反序列化:從字節(jié)序列中恢復(fù)對(duì)象? ? ?從流中讀取對(duì)象

ByteArrayOutPutStream:內(nèi)存輸出流 (輸入流不需要掌握)

DataOutputStream DataInputStream數(shù)據(jù)輸出輸入流(用的不是很多,但是需要掌握):這個(gè)流一般用來(lái)讀取基本數(shù)據(jù)類型获茬,可以寫(xiě)到內(nèi)存中也可以寫(xiě)到文件中? 怎么存就怎么取港庄,例如以byte寫(xiě)入文件,讀文件以byte去讀

字符流:

FileReader:

BufferedReader:

FileWriter:(這個(gè)流已經(jīng)不常用了)

PrintWriter:(常用):

BufferedWriter:(不常用)

兩種方式實(shí)現(xiàn)鍵盤(pán)錄入

A:BufferedReader的readLine方法恕曲。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

B:Scanner

例:

RandomAccessFile隨機(jī)讀取流(必須掌握):RandomAccessFile類不屬于流鹏氧,是Object類的子類。但它融合了InputStream和OutputStream的功能佩谣。支持對(duì)隨機(jī)訪問(wèn)文件的讀取和寫(xiě)入把还。


Properties

A:Properties的概述

Properties 類表示了一個(gè)持久的屬性集。

Properties 可保存在流中或從流中加載。

屬性列表中每個(gè)鍵及其對(duì)應(yīng)值都是一個(gè)字符串吊履。

B:案例演示Properties作為Map集合的使用?

Properties的特殊功能使用

A:Properties的特殊功能

public Object setProperty(String key,String value)

public String getProperty(String key)

public Enumeration?stringPropertyNames()



?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末安皱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子率翅,更是在濱河造成了極大的恐慌练俐,老刑警劉巖袖迎,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冕臭,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡燕锥,警方通過(guò)查閱死者的電腦和手機(jī)辜贵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)归形,“玉大人托慨,你說(shuō)我怎么就攤上這事∠玖瘢” “怎么了厚棵?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蔼紧。 經(jīng)常有香客問(wèn)我婆硬,道長(zhǎng),這世上最難降的妖魔是什么奸例? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任彬犯,我火速辦了婚禮,結(jié)果婚禮上查吊,老公的妹妹穿的比我還像新娘谐区。我一直安慰自己,他們只是感情好逻卖,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布宋列。 她就那樣靜靜地躺著,像睡著了一般评也。 火紅的嫁衣襯著肌膚如雪炼杖。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,084評(píng)論 1 291
  • 那天仇参,我揣著相機(jī)與錄音嘹叫,去河邊找鬼。 笑死诈乒,一個(gè)胖子當(dāng)著我的面吹牛罩扇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼喂饥,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼消约!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起员帮,我...
    開(kāi)封第一講書(shū)人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤或粮,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后捞高,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體氯材,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年硝岗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了氢哮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡型檀,死狀恐怖冗尤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情胀溺,我是刑警寧澤裂七,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站仓坞,受9級(jí)特大地震影響背零,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扯躺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一捉兴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧录语,春花似錦倍啥、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蒲稳,卻和暖如春氮趋,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背江耀。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工剩胁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人祥国。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓昵观,卻偏偏與公主長(zhǎng)得像晾腔,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子啊犬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

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