更新時間:2020-08-19 16:14:50 來源:動力節點 瀏覽2254次
總的來說,IO流分類如下:
輸入輸出方向:輸入流(從外設讀取到內存)和輸出流(從內存輸出到外設)
數據的操作方式:字節流和字符流
其中,字符流的由來:字節流讀取文字字節數據后,不直接操作,而是先查指定的編碼表(為什么是指定的?因為不同的國家制定的編碼表不一樣)獲取對應的文字,再對這個文字進行操作。簡單說:字符流=字節流+編碼表
字節流和字符流的區別:字節流不僅可以操作字符,還可以操作其他媒體文件
來張形象的圖片:
Java中的頂層父類:
字節流:InputStream,OutputStream
字符流:Reader, Writer
緩存技術
使用緩存技術能提高性能(?為什么,因為緩存技術相當于實在內存中開辟一個容器,將外設中的數據放到容器中,然后對容器進行操作,相比直接操作外設,確實大大提高效率)
1. 自己定義緩存區:相當于自定義一個數組
字節流緩存區:byte[] buf = new byte[1024];
字符流緩存區:char[] buf = new char[1024];
2. 利用緩存類,此處用到了裝配設計模式
何為裝配設計模式?
當需要對對象進行功能擴展時,為了避免繼承的臃腫和不靈活,將裝配類進行單獨的封裝,那個對象需要就將哪個對象和裝配類進行關聯
字節流緩存:
BufferedInputStream bfi = new BufferedInputStream(fi);
BufferedOutputStream bfo = new BufferedOutputStream(fo);
字符流緩存:
BufferedReader br = new BufferedReader(fr);
BufferedWriter bw = new BufferedWriter(fw);
示例:
使用字符流賦值一個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?{
????????//?讀寫相結合
????????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();//此處不寫就沒有換行
????????????bw.flush();
????????????System.out.println(new?String(line));
????????}
????????
????????br.close();
????????bw.close();
????}
}
以上就是動力節點java培訓機構的小編針對“Java文件字符流和字節流的輸入和輸出”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習