1. 程式人生 > >字元流Writer、緩衝字元流BufferedWriter、FileWriter常用方法

字元流Writer、緩衝字元流BufferedWriter、FileWriter常用方法

一、字元流:

                      讀寫時都是以字元為單位進行的。
             1:字元流的父類:
                               輸出流:Writer
                              輸入流:Reader
            2:OutputStreamWriter:是字元流通向位元組流的橋樑:可使用指定的 charset 將要寫入流中的字元編碼成位元組。
                                               它使用的字符集可以由名稱指定或顯式給定,否則將接受平臺預設的字符集。
            3. 構造器如下:
                   1) 輸出流的構造器: 
                              OutputStreamWriter(OutputStream os)
                              OutputStreamWriter(OutputStream os,String charset)
                   2) 輸入流的構造器:
                              InputStreamReader(InputStream is)
                              InputStreamReader(InputStream is,String charset])
                  3)常用方法:

           close():關閉此流,但要先重新整理它
           flush():重新整理該流的緩衝。
           getEncoding(): 返回此流使用的字元編碼的名稱。 
           write(char[] cbuf, int off, int len) :寫入字元陣列的某一部分。 
           write(int c) :寫入單個字元。 
           write(String str, int off, int len): 寫入字串的某一部分
           
  寫出引數num的二進位制的低十六位。
         * write(char[] ch):   
         * write(char[] ch,int startIndex,int length)
         * write(String str):寫出字串             
         * write(String str,int startIndex,int length)

  二、:緩衝字元流:

                     1)BufferedWriter--必須傳一個字元流引數 ,  [ 字元輸出緩衝流:  緩衝流-字元輸出流-位元組輸出流]
                          定義: 從字元輸入流中讀取文字,緩衝各個字元,從而實現字元、陣列和行的高效讀取。 
                     2)構造器:
                            BufferedWriter bw=new BufferedWriter( new OutputStreamWriter(         
                                                                                        new FileOutputStream("b.txt",true) ,  "utf-8"  )  ) ;    
                            BufferedReader br=new BufferedReader( new InputStreamReader(
                                                                                         new   FileInputStream("b.txt"),"utf-8"));

例子:
    bw.write('王');
    bw.flush();//實時重新整理到硬碟上 清空緩衝區的意思
    bw.write("從明".toCharArray());//6個
    bw.write("你好帥\r\n");
    bw.close();//流關閉前才會清空                  

             3)常用方法://可讀取一行
            

            1)  int read():
                  * 返回一個字元的int數值
            2)read(char[] ch)
                  * 讀取多個字元存入字元陣列中
            3)readLine()
                  * 讀取一行字串,讀不到資料返回null
            4)write(char ch)
                  * 作用:是寫一個字元型別
            5)write(char[] ch)
                  * 作用:寫出一個字元陣列
            6)write(char[] ch,int startIndex,int length)
                  * 作用:寫出一個固定長度的字元陣列
            7)write(String str):
                  * 作用:寫出一個字串
            8)write(String str,int startIndex,int length)


         4).技巧:

* 一般都是PrintWriter和bufferedReader對應著使用。
         * PrintWriter這個類提供了自動重新整理功能,
         * 要使用帶ln的println的方法
         * 此類提供了很多個構造器:
         * 常用的兩個:
         * PrintWriter(OutputStream so,boolean autoFlush)---位元組流
         * PrintWrite(Writer wt,boolean autFlush)
         * 當autoFlush位true時,
         * 提供了自動重新整理緩衝區的功能          
  PrintWriter pw=new PrintWriter( 
                     new FileOutputStream("c.txt",true),true);
   pw.println("世界你好");//流關閉前,一定會呼叫flush方法進行清空緩衝區。
   pw.flush();當構造器沒有設定行重新整理功能時,可以手動調此方法進行實時更新。
  

三、FileReader: --也有重新整理功能,但是不自動換行

    1.構造器:
               FileReader(String filepath)
               FileReader(File file)
                                  相當於InputStreamReader和FileInputStream的結合

    FileWriter: 不自動換行
         1.構造器:
             FileWriter(File file,[boolean append])
             FileWriter(String filepath,[boolean append])
                              相當於OutputStreamWriter和FileOutputStream的結合(BufferedWriter)
           例:FileWriter fw=new FileWriter("a.txt",true);
            fw.write("asdfasdfa123121313214342112");
            fw.flush();
            fw.close();