天天看点

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进行文件的输入输出。