Java FileReader类

FileReader用于以字符为单位读取文本文件,能够以字符流的形式读取文件内容。除了读取的单位不同之外,FileReader与FileInputStream并无太大差异,也就是说,FileReader用于读取文本。根据不同的编码方案,一个字符可能会相当于一个或者多个字节。

构造函数

FileReader(File file)   //在给定从中读取数据的 File 的情况下创建一个新FileReader。
FileReader(FileDescriptor fd)   //在给定从中读取数据的 FileDescriptor 的情况下创建一个新 FileReader。
FileReader(String fileName)   //在给定从中读取数据的文件名的情况下创建一个新FileReader。

方法

void close()   //关闭该流并释放与之关联的所有资源。
String getEncoding()   //返回此流使用的字符编码的名称。
int read()   //读取单个字符。返回值为读入字符对应的int值(0~65535)
int read(char[] cbuf, int offset, int length)   //将字符读入数组中的某一部分。返回值为读入字符个数
boolean ready()   //判断此流是否已经准备好用于读取。返回值为读入字符个数

例子

public static void main(String[] args) throws Excetpion {
      FileWriter out = new FileWriter("hello2.txt");
      out.write ("www.51gjie.com"); //在此可以直接写入字符串,不用转化为字节数组 
      out.close();
 
      char[] buf = new char[1024];  //字符数组
      FileReader in = new FileReader("hello2.txt");
      int len = in.read(buf);  //此时的read方法可以读取一个字符或几个字符,len代表实际读取到的字符的个数。
      System.out.println(new String(buf,0,1024)); //String构造函数把字符数组转化为字符串。
      in.close();
}

用FileWriter类向文件中写入一个串字符,然后用FileReader读出写入的内容。

总结

1.在使用FileReader 对象进行文件输入操作的时,JVM先读取本地文本文,然后将其格式转化为Unicode编码格式进行操作。再用FileWriter进行文本文件输出时则把Unicode编码格式再转换成本地(本地主机上)的编码格式(如ASCII或者GBK等)。

2.FileReader与FileWriter两个类和FileInputStream和FileOutputStream两个类的操作方法基本相同,只不过前者基于字符,后者基于字节(byte),若操作的文件不是文本文件,则建议使用FileInputStream和FileOutputStream进行文件的输入输出。

精彩推荐