日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IO流总述

發布時間:2023/12/3 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IO流总述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
IO流分類

1)按照流向分類:
輸入流:讀取數據用的
輸出流:寫數據用的

2)按照讀寫的數據分類(體系結構)
<1>字節流[讀寫任何類型的文件(任何文件底層都是字節數據)]
字節輸入流:IntputStream(抽象類)
–FileInuptStream: 讀取文件中的字節
–BufferedInputStream: 對InputStream進行包裝,提高讀取數據的效率
字節輸出流: OutputStream(抽象類)
–FileOutputSteam: 往文件中寫字節
–BufferedOutputStream: 對OutputStream進行包裝,提高寫入數據的效率

1)普通字節流復制//創建流對象FileInputStream fis = new FileInputStream("文件路徑");FileOutputStream fos = new FileOutputStream("文件路徑");//一次讀寫多個字節byte[] bs = new byte[1024]; //1024byte=1kbint len; //記錄每次讀取的字節個數while((len=fis.read(bs))){//把讀取到的有效字節數據,寫入目標文件中fos.write(bs,0,len);}//釋放資源fis.close();fos.close();2)緩沖字節流復制//創建流對象BufferedInputStream bis = new BufferedInputStream(new FileInputStream("文件路徑"));BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("文件路徑"));//如果是一次讀一個字節,則read返回的是讀取的字節//一次讀寫多個字節byte[] bs = new byte[1024]; //1024byte=1kbint len; //記錄每次讀取的字節個數,讀取的內容存儲到字節數組中while((len=bis.read(bs))!=-1){//把讀取到的有效字節數據,寫入目標文件中bos.write(bs,0,len);}//釋放資源bis.close();bos.close();

<2>字符流[只能讀取文本文件(用記事本打開能讀懂的就是文本文件)]
字符輸入流:Reader(抽象類)
–FileReader: 讀取文件中的字符數據
–BufferedReader: 對FileReader進行包裝,提高讀取字符的效率
字節輸出流: Writer(抽象類)
–FileWriter: 往文件中寫字符數據
–BufferedWriter: 對FileWriter進行包裝,提高寫入字符的效率

1)普通字符流復制//創建流對象FileReader fr = new FileReader("文件路徑");FileWriter fw = new FileWriter("文件路徑");//一次讀寫多個字符char[] bs = new char[1024]; //1024byte=1kbint len; //記錄每次讀取的字節個數while((len=fr.read(bs))!=-1){//把讀取到的有效字節數據,寫入目標文件中fw.write(bs,0,len);}//釋放資源fr.close();fw.close();2)字符緩沖流復制//創建流對象BuferedReader br = new BufferedReader(new FileReader("文件路徑"));BuferedWriter bw = new BuferedWriter(new FileWriter("文件路徑"));//一次讀一行String line; //記錄每次讀取的那一行while((line=br.readLine())!=null){//把讀取到的有效字節數據,寫入目標文件中bw.write(line);bw.newLine(); //換行,具備跨平臺性bw.flush; // 刷新}//釋放資源br.close();bw.close();

3)字節流以及字符流的注意事項:
<1>為什么字節流讀取文本文件,可能會出現亂碼?
字節流一次讀一個字節,而不管GBK還是UTF-8一個中文都是多個字節,用字節流每次只能讀其中的一部分,所以就會出現亂碼問題。

<2>字符流怎么解決亂碼問題
通過字符串的getBytes(“碼表名”) 和 new String(byte1, “碼表名”)進行編碼和解碼

<3>字符流寫數據
a.創建字符輸出流對象:如果文件不存在,就新建,但是要保證父級路徑的存在
如果文件存在就清空
b.寫數據:寫出int類型的整數,實際寫出的是整數在碼表上對應的字母
寫出字符串數據,是把字符串本身原樣寫出。

<4>字符流底層為【字節流+編碼表】

總結

以上是生活随笔為你收集整理的IO流总述的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。