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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

字节流+字符流

發(fā)布時間:2023/12/13 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 字节流+字符流 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、 IO流用來處理設(shè)備之間的數(shù)據(jù)傳輸
?a) 上傳文件
?b) 下載文件
2、 Java對數(shù)據(jù)的操作都是通過流的方式
3、 Java 用于操作流的對象都在IO包中
4、 IO流分類
?a) 流向
??i. 輸入流:程序讀取數(shù)據(jù)
??ii. 輸出流:程序向硬盤寫入數(shù)據(jù)
?b) 數(shù)據(jù)類型
??i. 字節(jié)流:
???1. 字節(jié)輸入流 讀數(shù)據(jù) InputStream
???2. 字節(jié)輸出流 寫數(shù)據(jù) OutPutStream
??ii. 字符流:為了方便操作文本數(shù)據(jù)
???1. 字符輸入流 讀數(shù)據(jù) Reader
???2. 字符輸出流 寫數(shù)據(jù) Writer
?c) 默認按照數(shù)據(jù)類型進行分類。
5、基本流和高級流
?基本流:可以直接操作文件的
??FileInputStream
??FileOutputStream
??FileReader
??FileWriter
??…………
?高級流:在基本流基礎(chǔ)上提供一些其他功能
?其中PrintStream、PrintStream既是基本流又是高級流
6、 總結(jié)
?a) 字符流復(fù)制數(shù)據(jù)5種方式:
??i. 字符緩沖區(qū)每次復(fù)制一個字符數(shù)組
??ii. 字符緩沖區(qū)每次復(fù)制一個字符
??iii. 每次復(fù)制一個字符數(shù)組
??iv. 每次復(fù)制一個字符
??v. 每次復(fù)制一行數(shù)據(jù)
?b) 字節(jié)流復(fù)制數(shù)據(jù)的4種方式
??i. 字節(jié)緩沖區(qū)每次復(fù)制一個字節(jié)數(shù)組
??ii. 字節(jié)緩沖區(qū)每次復(fù)制一個字節(jié)
??iii. 每次復(fù)制一個字節(jié)數(shù)組
??iv. 每次復(fù)制一個字節(jié)

?復(fù)制文件

publicclass CopyFileTest {

??? publicstaticvoid main(String[] args) throws IOException {

??????? //1,明確源和目的。

??????? File srcFile = new File("c:\\YesDir\test.JPG");

??????? File destFile = new File("copyTest.JPG");

???????

??????? //2,明確字節(jié)流 輸入流和源相關(guān)聯(lián),輸出流和目的關(guān)聯(lián)。

??????? FileInputStream fis = new FileInputStream(srcFile);

??????? FileOutputStream fos = new FileOutputStream(destFile);

???????

??????? //3, 使用輸入流的讀取方法讀取字節(jié),并將字節(jié)寫入到目的中。

??????? int ch = 0;

??????? while((ch=fis.read())!=-1){

??????????? fos.write(ch);

??????? }

??????? //4,關(guān)閉資源。

??????? fos.close();

??????? fis.close();

??? }

}

上述代碼輸入流和輸出流之間是通過ch這個變量進行數(shù)據(jù)交換的。

上述復(fù)制文件有個問題,每次都從源文件讀取一個,然后在寫到指定文件,接著再讀取一個字符,然后再寫一個,一直這樣下去。效率極低

?? 緩沖數(shù)組方式復(fù)制文件

publicclass CopyFileByBufferTest {

??? publicstaticvoid main(String[] args) throws IOException {

??????? File srcFile = new File("c:\\YesDir\test.JPG");

??????? File destFile = new File("copyTest.JPG");

??????? // 明確字節(jié)流 輸入流和源相關(guān)聯(lián),輸出流和目的關(guān)聯(lián)。

??????? FileInputStream fis = new FileInputStream(srcFile);

??????? FileOutputStream fos = new FileOutputStream(destFile);

??????? //定義一個緩沖區(qū)。

??????? byte[] buf = newbyte[1024];

??????? int len = 0;

??????? while ((len = fis.read(buf)) != -1) {

??? ??????? fos.write(buf, 0, len);// 將數(shù)組中的指定長度的數(shù)據(jù)寫入到輸出流中。

??????? }

??????? // 關(guān)閉資源。

??????? fos.close();

??????? fis.close();

??? }

}

速度要快

?

復(fù)制文本文件

我們一般用字符流復(fù)制文本文件

publicclass CopyTextFileTest {

??? publicstaticvoid main(String[] args) throws IOException {

??????? copyTextFile();

??? }

??? publicstaticvoid copyTextFile() throws IOException {

??????? //1,明確源和目的。

??????? FileReader fr = new FileReader("c:\\cn.txt");

??????? FileWriter fw = new FileWriter("c:\\copy.txt");

??????? //2,為了提高效率。自定義緩沖區(qū)數(shù)組。字符數(shù)組。

??????? char[] buf = newchar[1024];

??????? int len = 0;

??????? while((len=fr.read(buf))!=-1){

??????????? fw.write(buf,0,len);

??????? }

??????? /*2,循環(huán)讀寫操作。效率低。

??????? intch = 0;

??????? while((ch=fr.read())!=-1){

??????????? fw.write(ch);

??????? }

??????? */

??????? //3,關(guān)閉資源。

??????? fw.close();

??????? fr.close();

??? }

}

轉(zhuǎn)載于:https://www.cnblogs.com/sy130908/p/11474416.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的字节流+字符流的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。