java基礎(chǔ)入門(mén)之IO流
io學(xué)習(xí)框架:

文件:
保存數(shù)據(jù)的地方。

1)常見(jiàn)文件對(duì)象的相關(guān)構(gòu)造器和方法:

當(dāng)進(jìn)行File file = new File(filePath);只是在內(nèi)存上有一個(gè)文件對(duì)象;
只有file.createNewFile();才會(huì)在磁盤(pán)創(chuàng)建文件

獲取文件的相關(guān)信息:
utf8中,一個(gè)漢字是三個(gè)字節(jié),所以當(dāng)用字節(jié)流的read()方法一個(gè)字節(jié)一個(gè)字節(jié)的讀取的時(shí)候,將會(huì)出現(xiàn)亂碼的情況

2)目錄的刪除和增加:
a)用來(lái)刪除文件或者文件夾

b)文件夾的創(chuàng)建:

Io流的原理:

流的分類:
字節(jié)流適用于聲音等文件的傳輸,因?yàn)樽止?jié)流是一個(gè)字節(jié)一個(gè)字節(jié)的讀取,可以保證無(wú)損;
字符流雖然讀取的效率高些,但更適用于文本的讀?。?br />
注意:inpuStream,OutputStream,Reader,Writer全是抽象類,創(chuàng)建對(duì)象時(shí)候要實(shí)現(xiàn)他們的子類即可。

1)InputSream輸入流:


字節(jié)輸入流:文件–》程序
a)fileInputStream.read()一個(gè)一個(gè)字節(jié)讀取
(注意:輸出的時(shí)候不能像如圖框選的那樣輸出,因?yàn)閞ead()讀取的是下一個(gè)字符了)

b)改進(jìn),使用fileInputStream.read(buffer)

2)OutputStream

注意:如果使用OutputStream寫(xiě)入數(shù)據(jù)時(shí)候,文件不存在將自動(dòng)進(jìn)行文件的創(chuàng)建;
以下是寫(xiě)入數(shù)據(jù)的幾種方式,
當(dāng)使用紅框的語(yǔ)句的時(shí)候,寫(xiě)入數(shù)據(jù)會(huì)追加在文件中;
否則,將覆蓋文件的內(nèi)容

完成文件的拷貝:(需要輸入流和輸出流的綜合應(yīng)用)

3)FileReader:


1)FileReader的使用:

4) FileWriter:

使用filewriter后,必須關(guān)閉(close)或者刷新(flush),否則寫(xiě)入不到指定文件

a)FileWriter的使用:
使用filewriter后,必須關(guān)閉(close)或者刷新(flush),否則寫(xiě)入不到指定文件
close()相當(dāng)于flush()+關(guān)閉

節(jié)點(diǎn)流和處理流:
1)節(jié)點(diǎn)流:直接讀取數(shù)據(jù)源的流



2)處理流:對(duì)節(jié)點(diǎn)流進(jìn)行包裝

例如BufferReader:
readLine()是按行讀?。?br />
當(dāng)返回null時(shí)候,表示文件讀取完畢;
關(guān)閉流的時(shí)候,這里只需要關(guān)閉BufferReader,因?yàn)榈讓訒?huì)自動(dòng)去關(guān)閉節(jié)點(diǎn)流;

BufferWriter:
注意:如果需要追加在文件的話,是在節(jié)點(diǎn)流進(jìn)行設(shè)置;
newLine()插入一個(gè)換行符

兩者的區(qū)別與聯(lián)系:

BufferReader和BufferWriter實(shí)現(xiàn)文件拷貝:
注意:BufferReader和BufferWriter是安裝字符操作;
不要操作二進(jìn)制文件(聲音,視頻,doc,pdf,等等),可能會(huì)造成文件損壞

處理字節(jié)的處理流:
BufferedOutputStream和BufferedInputStream實(shí)現(xiàn)拷貝圖片:

當(dāng)然,除此之外,BufferedOutputStream和BufferedInputStream也可以實(shí)現(xiàn)文本的拷貝;
對(duì)象處理流:專門(mén)處理對(duì)象的流,專門(mén)把對(duì)象保存到文件中,并且能夠從文件中恢復(fù);
序列化:就是保存數(shù)據(jù)的時(shí)候,保存數(shù)據(jù)的值和數(shù)據(jù)類型;
標(biāo)記接口:沒(méi)有任何方法

1)ObjectInputStream:(也是包裝流)

示例:

2)ObjectOutputStream:

示例:
序列化之后,保存的文件格式,不是純文本,而是按照他的格式來(lái)存儲(chǔ)

當(dāng)反序列化的時(shí)候需要用到getName();toString()等方法的時(shí)候,序列化也要一并把這些方法存儲(chǔ)進(jìn)行;

對(duì)象流注意事項(xiàng):

標(biāo)準(zhǔn)輸入和輸出:
標(biāo)準(zhǔn)輸入,從鍵盤(pán)是獲取:Scanner scanner = new Sanner(System.in);

轉(zhuǎn)換流:
InputStreamReader:字節(jié)流轉(zhuǎn)化(包裝)為字符流;


1)**OutputStreamReader:**字節(jié)流轉(zhuǎn)化(包裝)為字符流;



打印流:
(只有輸出流,沒(méi)有輸入流)
PrintStream和PrintWriter(可以把信息打印到文件里面)
1)PrintStream



2)PrintWriter

PrintWriter可以傳入一個(gè)輸出流,這里System.out是標(biāo)準(zhǔn)輸出

Properties類:
1)傳統(tǒng)的處理方法(使用處理流加載配置文件),不方便:

2)Properties方式:


總結(jié)
這篇文章就到這里了,希望大家能夠喜歡,也希望大家能夠多多關(guān)注腳本之家其他文章!
相關(guān)文章
Java中json格式化BigDecimal保留2位小數(shù)
這篇文章主要給大家介紹了關(guān)于Java中json格式化BigDecimal保留2位小數(shù)的相關(guān)資料,BigDecimal是Java中的一個(gè)數(shù)學(xué)庫(kù),可以實(shí)現(xiàn)高精度計(jì)算,文中給出了詳細(xì)的代碼實(shí)例,需要的朋友可以參考下2023-09-09
springboot整合RabbitMQ 中的 TTL實(shí)例代碼
TTL 是 RabbitMQ 中一個(gè)消息或者隊(duì)列的屬性,表明一條消息或者該隊(duì)列中的所有消息的最大存活時(shí)間,單位是毫秒,這篇文章主要介紹了springboot整合RabbitMQ 中的 TTL,需要的朋友可以參考下2022-09-09
Spring?AOP實(shí)現(xiàn)用戶登錄統(tǒng)一驗(yàn)證功能
這篇文章主要為大家詳細(xì)介紹了Spring?AOP如何實(shí)現(xiàn)用戶登錄統(tǒng)一驗(yàn)證功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)具有一定的借鑒價(jià)值,需要的可以參考一下2023-01-01
Java實(shí)現(xiàn)紀(jì)元秒和本地日期時(shí)間互換的方法【經(jīng)典實(shí)例】
這篇文章主要介紹了Java實(shí)現(xiàn)紀(jì)元秒和本地日期時(shí)間互換的方法,結(jié)合具體實(shí)例形式分析了Java日期時(shí)間相關(guān)操作技巧,需要的朋友可以參考下2017-04-04
SpringBoot2 實(shí)現(xiàn)JPA分頁(yè)和排序分頁(yè)的案例
這篇文章主要介紹了SpringBoot2 實(shí)現(xiàn)JPA分頁(yè)和排序分頁(yè)的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
SpringBoot在線代碼修改器的問(wèn)題及解決方法
這篇文章主要介紹了SpringBoot在線代碼修改器的問(wèn)題及解決方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
關(guān)于SHA算法原理與常用實(shí)現(xiàn)方式
這篇文章主要介紹了關(guān)于SHA算法原理與常用實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
Java高級(jí)之虛擬機(jī)加載機(jī)制的實(shí)例講解
下面小編就為大家分享一篇Java高級(jí)之虛擬機(jī)加載機(jī)制的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
shiro多驗(yàn)證登錄代碼實(shí)例及問(wèn)題解決
這篇文章主要介紹了shiro多驗(yàn)證登錄代碼實(shí)例及問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
Mybatis插件擴(kuò)展及與Spring整合原理分析
這篇文章主要介紹了Mybatis插件擴(kuò)展及與Spring整合原理,本文通過(guò)實(shí)例文字相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07

