天天看點

JAVA中常用IO流類:FileReader和FileWriter

FileReader 用于以字元為機關讀取文本檔案

構造方法摘要

FileReader(File file)

          在給定從中讀取資料的 File 的情況下建立一個新FileReader。

FileReader(FileDescriptor fd)

          在給定從中讀取資料的 FileDescriptor 的情況下建立一個新 FileReader。

FileReader(String fileName)

          在給定從中讀取資料的檔案名的情況下建立一個新FileReader。

從InputStreamReader類繼承的方法:

方法摘要

 void

close()

          關閉該流并釋放與之關聯的所有資源。

 String

getEncoding()

          傳回此流使用的字元編碼的名稱。

 int

read()

          讀取單個字元。傳回值為讀入字元對應的int值(0~65535)

 int

read(char[] cbuf, int offset, int length)

          将字元讀入數組中的某一部分。傳回值為讀入字元個數

 boolean

ready()

          判斷此流是否已經準備好用于讀取。傳回值為讀入字元個數

FileWriter類用于将字元資料寫出到文本檔案中

構造方法摘要

FileWriter(File file)

          根據給定的 File 對象構造一個 FileWriter 對象。

FileWriter(File file, boolean append)

          根據給定的 File 對象構造一個 FileWriter 對象。

FileWriter(FileDescriptor fd)

          構造與某個檔案描述符相關聯的 FileWriter 對象。

FileWriter(String fileName)

          根據給定的檔案名構造一個 FileWriter 對象。

FileWriter(String fileName, boolean append)

          根據給定的檔案名以及訓示是否附加寫入資料的 boolean 值來構造 FileWriter 對象。

從OutputStreamWriter類繼承的方法:

方法摘要

 void

close()

          關閉此流,但要先重新整理它。

 void

flush()

          重新整理該流的緩沖。

 String

getEncoding()

          傳回此流使用的字元編碼的名稱。

 void

write(char[] cbuf, int off, int len)

          寫入字元數組的某一部分。

 void

write(int c)

          寫入單個字元。

 void

write(String str, int off, int len)

          寫入字元串的某一部分。

執行個體:

用這兩個類實行複制文本檔案的操作。

[java]  view plain  copy

  1. import java.io.FileReader;  
  2. import java.io.FileWriter;  
  3. import java.io.IOException;  
  4. class IODemo  
  5. {  
  6.     public static void main(String[] args)   
  7.     {  
  8.         try  
  9.         {  
  10.         //使用FileReader和FileWriter進行檔案複制(操作的是字元)  
  11.         FileReader fr=new FileReader("a.txt");  
  12.         FileWriter fw=new FileWriter("c.txt");  
  13.             int read;  
  14.             //byte b[]=new byte[1024];  
  15.             read=fr.read();  
  16.             while(read!=-1)  
  17.             {  
  18.                 fw.write(read);  
  19.                 //read=fis.read(b);  
  20.                 read=fr.read();  
  21.             }  
  22.             fr.close();  
  23.             fw.close();  
  24.         }  
  25.         catch (IOException e)  
  26.         {  
  27.             e.printStackTrace();  
  28.         }  
  29.     }  
  30. }  

上述例子也可以使用read()方法和write()方法逐個讀入和寫出字元

注:

1.在使用FileReader 對象進行檔案輸入操作的時,JVM先讀取本地文本文,然後将其格式轉化為Unicode編碼格式進行操作。再用FileWriter進行文本檔案輸出時則把Unicode編碼格式再轉換成本地(本地主機上)的編碼格式(如ASCII或者GBK等)。

2.FileReader與FileWriter兩個類和FileInputStream和FileOutputStream兩個類的操作方法基本相同,隻不過前者基于字元,後者基于位元組(byte),若操作的檔案不是文本檔案,則建議使用FileInputStream和FileOutputStream進行檔案的輸入輸出。