更新時(shí)間:2020-08-19 16:14:50 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2326次
總的來(lái)說(shuō),IO流分類如下:
輸入輸出方向:輸入流(從外設(shè)讀取到內(nèi)存)和輸出流(從內(nèi)存輸出到外設(shè))
數(shù)據(jù)的操作方式:字節(jié)流和字符流
其中,字符流的由來(lái):字節(jié)流讀取文字字節(jié)數(shù)據(jù)后,不直接操作,而是先查指定的編碼表(為什么是指定的?因?yàn)椴煌膰?guó)家制定的編碼表不一樣)獲取對(duì)應(yīng)的文字,再對(duì)這個(gè)文字進(jìn)行操作。簡(jiǎn)單說(shuō):字符流=字節(jié)流+編碼表
字節(jié)流和字符流的區(qū)別:字節(jié)流不僅可以操作字符,還可以操作其他媒體文件
來(lái)張形象的圖片:
Java中的頂層父類:
字節(jié)流:InputStream,OutputStream
字符流:Reader, Writer
緩存技術(shù)
使用緩存技術(shù)能提高性能(?為什么,因?yàn)榫彺婕夹g(shù)相當(dāng)于實(shí)在內(nèi)存中開辟一個(gè)容器,將外設(shè)中的數(shù)據(jù)放到容器中,然后對(duì)容器進(jìn)行操作,相比直接操作外設(shè),確實(shí)大大提高效率)
1. 自己定義緩存區(qū):相當(dāng)于自定義一個(gè)數(shù)組
字節(jié)流緩存區(qū):byte[] buf = new byte[1024];
字符流緩存區(qū):char[] buf = new char[1024];
2. 利用緩存類,此處用到了裝配設(shè)計(jì)模式
何為裝配設(shè)計(jì)模式?
當(dāng)需要對(duì)對(duì)象進(jìn)行功能擴(kuò)展時(shí),為了避免繼承的臃腫和不靈活,將裝配類進(jìn)行單獨(dú)的封裝,那個(gè)對(duì)象需要就將哪個(gè)對(duì)象和裝配類進(jìn)行關(guān)聯(lián)
字節(jié)流緩存:
BufferedInputStream bfi = new BufferedInputStream(fi);
BufferedOutputStream bfo = new BufferedOutputStream(fo);
字符流緩存:
BufferedReader br = new BufferedReader(fr);
BufferedWriter bw = new BufferedWriter(fw);
示例:
使用字符流賦值一個(gè)txt文件
import?java.io.BufferedReader;
import?java.io.BufferedWriter;
import?java.io.FileReader;
import?java.io.FileWriter;
public?class?BufferedRWDemo?{
????public?static?void?main(String[]?args)?throws?Exception?{
????????//?讀寫相結(jié)合
????????FileReader?fr?=?new?FileReader("fw.txt");
????????BufferedReader?br?=?new?BufferedReader(fr);
????????
????????FileWriter?fw?=?new?FileWriter("fwcopy.txt");
????????
????????BufferedWriter?bw?=?new?BufferedWriter(fw);
????????
????????String?line?=?null;
????????
????????while((line=br.readLine())!=null)?{
????????????bw.write(line);
????????????bw.newLine();//此處不寫就沒(méi)有換行
????????????bw.flush();
????????????System.out.println(new?String(line));
????????}
????????
????????br.close();
????????bw.close();
????}
}
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java文件字符流和字節(jié)流的輸入和輸出”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)