Java 基礎(chǔ) 44 字符流

1.1 字符流的練習(xí)之復(fù)制Java文件

1.1.1案例代碼

/*
 * 把當(dāng)前項目目錄下的StringDemo.java內(nèi)容復(fù)制到當(dāng)前項目目錄下的Copy.java中
 * 
 * 數(shù)據(jù)源:
 *      StringDemo.java---讀數(shù)據(jù)---字符流---InputStreamReader
 * 目的地:
 *      Copy.java---寫數(shù)據(jù)---字符流---OutputStreamWriter
 */
public class CopyJavaTest {
    public static void main(String[] args) throws IOException {
        //封裝數(shù)據(jù)源
        InputStreamReader isr = new InputStreamReader(new FileInputStream("StringDemo.java"));
        //封裝目的地
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("Copy.java"));
    
        //讀寫數(shù)據(jù)
        //方式1:一次讀寫一個字符
//      int ch;
//      while((ch=isr.read())!=-1) {
//          osw.write(ch);
//      }
        
        //方式2:一次讀寫一個字符數(shù)組
        char[] chs = new char[1024];
        int len;
        while((len=isr.read(chs))!=-1) {
            osw.write(chs, 0, len);
        }
        
        //釋放資源
        osw.close();
        isr.close();
    }
}

1.2 字符流的練習(xí)之復(fù)制Java文件改進(jìn)版

1.2.1改進(jìn)原因

??轉(zhuǎn)換流的名字比較長善绎,而我們常見的操作都是按照本地默認(rèn)編碼實現(xiàn)的晰骑,所以,為了簡化我們的書寫,轉(zhuǎn)換流提供了對應(yīng)的子類。

  • FileWriter
  • FileReader

1.2.2 案例代碼

public class CopyJavaTest2 {
    public static void main(String[] args) throws IOException {
        //封裝數(shù)據(jù)源
        FileReader fr = new FileReader("StringDemo.java");
        //封裝目的地
        FileWriter fw = new FileWriter("Copy.java");
        
        //讀寫數(shù)據(jù)
        //一次讀寫一個字符
//      int ch;
//      while((ch=fr.read())!=-1) {
//          fw.write(ch);
//      }
        
        //一次讀寫一個字符數(shù)組
        char[] chs = new char[1024];
        int len;
        while((len=fr.read(chs))!=-1) {
            fw.write(chs, 0, len);
        }
        
        //釋放資源
        fw.close();
        fr.close();
    }
}

1.3 字符緩沖區(qū)流的概述和使用

1.3.1字符緩沖區(qū)流的概述

  • BufferedWriter
    • 將文本寫入字符輸出流,緩沖各個字符钠糊,從而提供單個字符、數(shù)組和字符串的高效寫入壹哺。
    • 可以指定緩沖區(qū)的大小,或者接受默認(rèn)的大小艘刚。在大多數(shù)情況下管宵,默認(rèn)值就足夠大了。
    • 構(gòu)造方法:
      • BufferedWriter(Writer out)
  • BufferedReader
    • 從字符輸入流中讀取文本攀甚,緩沖各個字符箩朴,從而實現(xiàn)字符、數(shù)組和行的高效讀取秋度。
    • 可以指定緩沖區(qū)的大小炸庞,或者可使用默認(rèn)的大小。大多數(shù)情況下荚斯,默認(rèn)值就足夠大了埠居。
    • 構(gòu)造方法:
      • BufferedReader(Reader in)

1.3.2 案例代碼


public class BufferedStreamDemo {
    public static void main(String[] args) throws IOException {
//      //創(chuàng)建字符緩沖輸出流對象
//      BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
//      //調(diào)用寫數(shù)據(jù)的方法
//      bw.write("hello");
//      //釋放資源
//      bw.close();
        
        
        //創(chuàng)建字符緩沖輸入流對象
        BufferedReader br = new BufferedReader(new FileReader("BufferedStreamDemo.java"));
        
        //方式1:一次讀取一個字符
//      int ch;
//      while((ch=br.read())!=-1) {
//          System.out.print((char)ch);
//      }
        
        //方式2:一次讀取一個字符數(shù)組
        char[] chs = new char[1024];
        int len;
        while((len=br.read(chs))!=-1) {
            System.out.print(new String(chs,0,len));
        }
        
        //釋放資源
        br.close();
    }
}

1.4 字符緩沖區(qū)流的練習(xí)之復(fù)制文本文件

1.4.1 案例代碼


/*
 * 把項目目錄下的a.txt內(nèi)容復(fù)制到項目目錄下的b.txt中
 * 
 * 數(shù)據(jù)源:
 *      a.txt---讀數(shù)據(jù)---字符流---InputStreamReader---FileReader---BufferedReader
 * 目的地:
 *      b.txt---寫數(shù)據(jù)---字符流---OutputStreamWriter---FileWriter---BufferedWriter
 */
public class CopyTxtTest {
    public static void main(String[] args) throws IOException {
        //封裝數(shù)據(jù)源
        BufferedReader br = new BufferedReader(new FileReader("a.txt"));
        //封裝目的地
        BufferedWriter bw = new BufferedWriter(new FileWriter("b.txt"));
        
        //讀寫數(shù)據(jù)
        //一次讀寫一個字符數(shù)組
        char[] chs = new char[1024];
        int len;
        while((len=br.read(chs))!=-1) {
            bw.write(chs, 0, len);
        }
        
        //釋放資源
        bw.close();
        br.close();
    }
}

1.5 字符緩沖區(qū)流的特殊功能

1.5.1 方法摘要


* BufferedWriter
  * void newLine():寫入一個行分隔符,這個行分隔符是由系統(tǒng)決定的
* BufferedReader
  * String readLine():包含該行內(nèi)容的字符串查牌,不包含任何行終止符,如果已到達(dá)流末尾滥壕,則返回 null

1.5.2 案例代碼



public class BufferedStreamDemo {
    public static void main(String[] args) throws IOException {
//      //創(chuàng)建字符緩沖輸出流對象
//      BufferedWriter bw = new BufferedWriter(new FileWriter("bw.txt"));
//      
//      //寫數(shù)據(jù)
//      for(int x=0; x<3; x++) {
//          bw.write("hello");
////            bw.write("\r\n");
//          bw.newLine();
//          bw.flush();
//      }
//      
//      //釋放資源
//      bw.close();
        
        //創(chuàng)建字符緩沖輸入流對象
        BufferedReader br = new BufferedReader(new FileReader("bw.txt"));
        
//      //讀取一次
//      String line = br.readLine();
//      System.out.println(line);
//      //在讀取一次
//      line = br.readLine();
//      System.out.println(line);
//      line = br.readLine();
//      System.out.println(line);
//      //多讀取兩次
//      line = br.readLine();
//      System.out.println(line);
//      line = br.readLine();
//      System.out.println(line);
        
        //最終版代碼
        String line;
        while((line=br.readLine())!=null) {
            System.out.println(line);
        }
        
        //釋放資源
        br.close();
    }
}

1.6 字符緩沖區(qū)流的特殊功能復(fù)制Java文件

1.6.1 案例代碼


public class CopyJavaTest {
    public static void main(String[] args) throws IOException {
        //封裝數(shù)據(jù)源
        BufferedReader br = new BufferedReader(new FileReader("BufferedStreamDemo.java"));
        //封裝目的地
        BufferedWriter bw = new BufferedWriter(new FileWriter("Copy.java"));
        
        //讀寫數(shù)據(jù)
        String line;
        while((line=br.readLine())!=null) {
            bw.write(line);
            bw.newLine();
            bw.flush();
        }
        
        //釋放資源
        bw.close();
        br.close();
        
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末纸颜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子绎橘,更是在濱河造成了極大的恐慌胁孙,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件称鳞,死亡現(xiàn)場離奇詭異涮较,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)冈止,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門狂票,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人靶瘸,你說我怎么就攤上這事苫亦。” “怎么了怨咪?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵屋剑,是天一觀的道長。 經(jīng)常有香客問我诗眨,道長唉匾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任匠楚,我火速辦了婚禮巍膘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘芋簿。我一直安慰自己峡懈,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布与斤。 她就那樣靜靜地躺著肪康,像睡著了一般。 火紅的嫁衣襯著肌膚如雪撩穿。 梳的紋絲不亂的頭發(fā)上磷支,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機(jī)與錄音食寡,去河邊找鬼雾狈。 笑死,一個胖子當(dāng)著我的面吹牛抵皱,可吹牛的內(nèi)容都是我干的善榛。 我是一名探鬼主播辩蛋,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼锭弊!你這毒婦竟也來了堪澎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤味滞,失蹤者是張志新(化名)和其女友劉穎樱蛤,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剑鞍,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡昨凡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蚁署。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片便脊。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖光戈,靈堂內(nèi)的尸體忽然破棺而出哪痰,到底是詐尸還是另有隱情,我是刑警寧澤久妆,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布晌杰,位于F島的核電站,受9級特大地震影響筷弦,放射性物質(zhì)發(fā)生泄漏肋演。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一烂琴、第九天 我趴在偏房一處隱蔽的房頂上張望爹殊。 院中可真熱鬧,春花似錦奸绷、人聲如沸梗夸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绒瘦。三九已至,卻和暖如春扣癣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背憨降。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工父虑, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人授药。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓士嚎,卻偏偏與公主長得像呜魄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子莱衩,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1. 流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念爵嗅。在UNIX中,管道是一條不間斷的字節(jié)...
    JackChen1024閱讀 825評論 0 10
  • 概述: 1笨蚁、IO流:即Input Output的縮寫睹晒。 2、特點:1)IO流用來處理設(shè)備間的數(shù)據(jù)傳輸括细。2)Java...
    玉圣閱讀 1,249評論 0 3
  • # 3.1 File # ## 3.1.1 File基本概念 ## 1.基本概念 -File類用于表示文件(目錄)...
    閆子揚(yáng)閱讀 462評論 0 0
  • 你比孤獨還要酷 你好伪很,我是陟遐412,很高興能和你分享我的故事奋单。 1. 清晨锉试,睜開眼六點十二,因為實習(xí)览濒,所以近期的...
    陟遐_閱讀 172評論 6 4
  • 剛剛準(zhǔn)備和一個四歲小朋友比賽喝水 和了一點水的他說水有點熱 我說讓我嘗嘗 “不熱呀"他有水“我是小孩你是大人呀”是...
    梟梟閱讀 143評論 0 0