<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # JAVA之旅(二十四)——I/O流,字符流,FileWriter,IOException,文件續寫,FileReader,小練習 * * * > JAVA之旅林林總總也是寫了二十多篇了,我們今天終于是接觸到了I/O了。如果你初學,不懂IO流,你可以從前往后慢慢看,但是你工作了一段時間你會發現,流的使用場景以及技術點是非常的強硬的,我們勢必要掌握這個知識點,如果你覺得翻閱API比較鼓噪,看視頻得不到精髓,看書看不到要點,你就跟隨我的JAVA之旅,一起去探索吧! ## 一.I/O概述 > I/O全名:Input Output,輸入輸出的意思 * IO流用來處理設備之間的數據傳輸 * JAVA對數據的操作都是通過流的方式 * JAVA用于操作流的對象都在IO包里 * 流操作分兩種:字節流,字符流 * 流按流向分為:輸入流,輸出流 > 對數據的操作,其實就是File文件,我們可以去網上偷張圖片來描述我們本大系列的所有知識點 ![這里寫圖片描述](http://img.blog.csdn.net/20160702105442157) > **圖片來自于網絡** * 字節流的抽象積累 * InputStream * OutputStream * 字符流的抽象基類 * Reader * Writer > 從圖中可以看出,都是從這四個類中派生出來的子類,但是他們的后綴都是這四個 ## 二.FileWriter > 我們先從字符流開始,肯定是從子類對象下手,我們對文件操作開始吧! * 需求:在硬盤上創建一個文件,并且寫入數據 > 那我們怎么去做?他構造函數比較多的,我們看例子 ~~~ package com.lgl.hellojava; import java.io.FileWriter; import java.io.IOException; public class HelloJJAVA { public static void main(String[] args) { /** * 需求:在硬盤上創建一個文件,并且寫入數據 */ // 一被初始化就必須要有被操作的文件 // 如果不指定位置,就創建在同目錄下 // 如果目錄下存在同名文件,覆蓋 try { FileWriter fileWriter = new FileWriter("test.txt"); // 寫入數據到內存 fileWriter.write("abcde"); // 刷新該流的緩沖 // fileWriter.flush(); // 關閉流 關閉之前會刷新,和flush的區別在于flush刷新后流可以繼續工作 fileWriter.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } ~~~ > 這樣在我們的項目根目錄下就可以看到生成的文件了 ![這里寫圖片描述](http://img.blog.csdn.net/20160702123225142) > 我用白話再說一遍吧,其實就是創建fileWriter ,他沒有空構造函數,你創建一個文件,可以傳文件名或者路徑,然后wirter寫數據,這樣你是看不到的,你需要刷新,刷新是刷新緩沖區,你現在就可以看到了,拋異常,還有關閉,關閉之前會刷新的,但是這個流就沒用了,根據自己的場景來分析 ## 三.IOException、 > 我們來看看怎么處理IO的異常,IO異常大致有三個,一個是IO異常,一個是找不到文件異常,還有一個就是沒有對象異常了,我們比較嚴謹的寫法 ~~~ package com.lgl.hellojava; import java.io.FileWriter; import java.io.IOException; public class HelloJJAVA { public static void main(String[] args) { FileWriter fileWriter = null; try { fileWriter = new FileWriter("demo.txt"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { if (fileWriter != null) { fileWriter.close(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } ~~~ ## 四.文件續寫 > 我們知道,文件存在的話就會覆蓋,但是我們不想這樣,我們想在原有的數據中續寫,這該去怎么做? ~~~ package com.lgl.hellojava; import java.io.FileWriter; import java.io.IOException; public class HelloJJAVA { public static void main(String[] args) { try { //參數2代表不覆蓋已有的文件,支持續寫 FileWriter fileWriter = new FileWriter("demo.txt",true); fileWriter.write("你好"); fileWriter.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } ~~~ > 構造傳參的時候設置為true就可以續寫文件了 ## 五.FileReader > 既然寫已經會了,那我們就來讀取了 ~~~ package com.lgl.hellojava; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class HelloJJAVA { public static void main(String[] args) { try { // 創建一個文件讀取流對象,和指定名稱的文件關聯,保證文件存在, // 如果不存在,異常 FileReader fileReader = new FileReader("demo.txt"); // 讀取單個字符,自動往下讀 int cd = fileReader.read(); System.out.println((char) cd); //全部打印 int ch = 0; while ((ch = fileReader.read()) != -1) { System.out.println(ch); } fileReader.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } ~~~ > 這樣就可以按照字節讀取了,我們也可以把讀到的字符存儲在數組中 ~~~ package com.lgl.hellojava; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class HelloJJAVA { public static void main(String[] args) { try { FileReader fileReader = new FileReader("demo.txt"); char[] buf = new char[3]; int num = fileReader.read(buf); System.out.println("num:" + num + new String(buf)); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } ~~~ > OK,讀出來了 ![這里寫圖片描述](http://img.blog.csdn.net/20160702143241921) ## 六.小練習 > 我們字符流的讀取和一些小操作算是了解了一點了,我們用一個小練習來結束本篇幅吧 * 需求:讀取一個.java的文件,打印出來 > 好的,其實這個是比較簡單的,我們看代碼 ~~~ package com.lgl.hellojava; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class HelloJJAVA { public static void main(String[] args) { try { FileReader fileReader = new FileReader("Single.java"); char[] cs = new char[1024]; int num = 0; while ((num = fileReader.read(cs)) != -1) { System.out.println(new String(cs, 0, num)); } fileReader.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } ~~~ > 是不是比較簡單,讀取到之后就直接存在數組中,打印出來 ![這里寫圖片描述](http://img.blog.csdn.net/20160702143816202) > OK,到這里我們的IO入門算是了解了一點,不過這還不夠,我們應該繼續深入一下,我們下一篇繼續跟進IO,敬請期待! ## 歡迎加群:555974449,我們一起探索! 版權聲明:本文為博主原創文章,博客地址:http://blog.csdn.net/qq_26787115,未經博主允許不得轉載。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看