山村老表

          山村老表
          隨筆 - 1, 文章 - 3, 評論 - 1, 引用 - 0
          數據加載中……

          Java IO流學習-----字節流

          /*
          1,
          源:鍵盤錄入。
          目的:控制臺。

          2,需求:想把鍵盤錄入的數據存儲到一個文件中。
          源:鍵盤。
          目的:文件。

          3,需求:想要將一個文件的數據打印在控制臺上。
          源:文件。
          目的:控制臺。

          流操作的基本規律:
          最痛苦的就是流對象有很多,不知道該用哪一個。

          通過三個明確來完成。

          1,明確源和目的。
              源:輸入流。InputStream  Reader
              目的:輸出流。OutputStream  Writer。
          2,操作的數據是否是純文本。
              是:字符流。
              不是:字節流。

          3,當體系明確后,在明確要使用哪個具體的對象。
              通過設備來進行區分:
              源設備:內存,硬盤。鍵盤
              目的設備:內存,硬盤,控制臺。


          1,將一個文本文件中數據存儲到另一個文件中。復制文件。
              源:因為是源,所以使用讀取流。InputStream Reader 
              是不是操作文本文件。
              是!這時就可以選擇Reader
              這樣體系就明確了。

              接下來明確要使用該體系中的哪個對象。
              明確設備:硬盤。上一個文件。
              Reader體系中可以操作文件的對象是 FileReader

              是否需要提高效率:是!。加入Reader體系中緩沖區 BufferedReader.


              FileReader fr = new FileReader("a.txt");
              BufferedReader bufr = new BufferedReader(fr);




              目的:OutputStream Writer
              是否是純文本。
              是!Writer。
              設備:硬盤,一個文件。
              Writer體系中可以操作文件的對象FileWriter。
              是否需要提高效率:是!。加入Writer體系中緩沖區 BufferedWriter

              FileWriter fw = new FileWriter("b.txt");
              BufferedWriter bufw = new BufferedWriter(fw);


          練習:將一個圖片文件中數據存儲到另一個文件中。復制文件。要按照以上格式自己完成三個明確。


          ---------------------------------------

          2,需求:將鍵盤錄入的數據保存到一個文件中。
              這個需求中有源和目的都存在。
              那么分別分析
              源:InputStream Reader
              是不是純文本?是!Reader

              設備:鍵盤。對應的對象是System.in.
              不是選擇Reader嗎?System.in對應的不是字節流嗎?
              為了操作鍵盤的文本數據方便。轉成字符流按照字符串操作是最方便的。
              所以既然明確了Reader,那么就將System.in轉換成Reader。
              用了Reader體系中轉換流,InputStreamReader

              InputStreamReader isr = new InputStreamReader(System.in);

              需要提高效率嗎?需要!BufferedReader
              BufferedReader bufr = new BufferedReader(isr);



              目的:OutputStream  Writer
              是否是存文本?是!Writer。
              設備:硬盤。一個文件。使用 FileWriter。
              FileWriter fw = new FileWriter("c.txt");
              需要提高效率嗎?需要。
              BufferedWriter bufw = new BufferedWriter(fw);


              **************
              擴展一下,想要把錄入的數據按照指定的編碼表(utf-8),將數據存到文件中。

              目的:OutputStream  Writer
              是否是存文本?是!Writer。
              設備:硬盤。一個文件。使用 FileWriter。
              但是FileWriter是使用的默認編碼表。GBK.

              但是存儲時,需要加入指定編碼表utf-8。而指定的編碼表只有轉換流可以指定。
              所以要使用的對象是OutputStreamWriter。
              而該轉換流對象要接收一個字節輸出流。而且還可以操作的文件的字節輸出流。FileOutputStream

              OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("d.txt"),"UTF-8");

              需要高效嗎?需要。
              BufferedWriter bufw = new BufferedWriter(osw);

              所以,記住。轉換流什么使用。字符和字節之間的橋梁,通常,涉及到字符編碼轉換時,
              需要用到轉換流。


          練習:將一個文本數據打印在控制臺上。要按照以上格式自己完成三個明確。



          */

          class  TransStreamDemo2
          {
              
          public static void main(String[] args) throws IOException
              {
                  System.setIn(
          new FileInputStream("PersonDemo.java"));

                  System.setOut(
          new PrintStream("zzz.txt"));

                  
          //鍵盤的最常見寫法。
                  BufferedReader bufr = 
                          
          new BufferedReader(new InputStreamReader(System.in));


                  BufferedWriter bufw 
          = new BufferedWriter(new OutputStreamWriter(System.out));

                  String line 
          = null;

                  
          while((line=bufr.readLine())!=null)
                  {
                      
          if("over".equals(line))
                          
          break;
                      bufw.write(line.toUpperCase());
                      bufw.newLine();
                      bufw.flush();
                  }

                  bufr.close();

              }
          }

          posted on 2013-07-07 23:26 山村老表 閱讀(138) 評論(0)  編輯  收藏 所屬分類: JavaEE


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 手游| 南投市| 彰化县| 定结县| 长岭县| 新化县| 河北区| 弥渡县| 丘北县| 石棉县| 藁城市| 饶河县| 巧家县| 太谷县| 江油市| 洪雅县| 阳泉市| 海城市| 卓资县| 连江县| 无锡市| 成都市| 邵阳市| 庆城县| 涞源县| 府谷县| 普定县| 钟祥市| 庐江县| 黑山县| 洱源县| 金乡县| 静乐县| 瑞丽市| 扶沟县| 谢通门县| 平舆县| 建平县| 安溪县| 峨眉山市| 读书|