Java IO(十七)FIleReader 和 FileWriter

Java IO(十七)FIleReader 和 FileWriter

一、介绍

FIleReader 和 FileWriter 是读写字符文件的便利类,分别继承于 InputStreamReader 和 OutputStreamWriter,同 FileInputStream 和 FileOutputStream 类似。

  • FIleReader:读取字符文件的便利类,继承于InputStreamReader,是用于读取字符流的类。
  • FileWriter:写入字符文件的便利类,继承于OutputStreamReader,是用于写入字符流的类。

注意:

  • FIleReader 和 FileWriter 是读写字符流的类,如果读取字节流,考虑使用 FileInputStream 和 FileOutputStream。
  • FIleReader 和 FileWriter 不能指定编码集(格式),如果需要指定编码集(格式),考虑使用它们的父类 InputStreamReader 和 OutputStreamWriter。

二、构造方法

(一)、FIleReader 

(二)、FileWriter

三、常用API

FileReader 和 FileWriter 直接基于 InputStreamReader 和 OutputStreamWriter 实现的,具体 API 可以参考 Java IO(十六)InputStreamReader 和 InputStreamWriter 

四、实例

public class FileDemo {
    private static char[] chs = new char[] 
            {'a','b','c','d','e','f','g','h','i','j','k','l','m',
            'n','o','p','q','r','s','t','u','v','w','x','y','z'};
    public static void main(String[] args) {
        write();
        read();
    }
    
    /**
     * FileWriter 测试
     */
    public static void write() {
        FileWriter out = null;
        try {
            // 给定文件名,并指定追加模式:true,续写到文件中
            out = new FileWriter("file.txt",true);
            out.write("字节流转换为字符的案例");// 写入中文字符
            out.write("0123456789");// 写入数字并换行
            out.write(chs);// 写入字符数组
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                if (out != null)
                    out.close();
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
    /**
     *  FileReader 测试
     */
    public  static void read() {
        FileReader in = null;
        char[] buff = new char[10];
        int len = 0;
        try {
            in = new FileReader("file.txt");
            System.out.println("read : " + (char)in.read());// 读取一个字符
            in.skip(5);// 跳过5个字符
            len = in.read(buff, 0, 10);// 从0开始读取10个字符缓存到buff中
            System.out.println("buff : " + new String(buff,0,len));
            // 读取剩余字符
            while((len = in.read(buff)) != -1){
                System.out.println("str : " + new String(buff,0,len));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try {
                if (in != null)
                    in.close();
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
原文地址:https://www.cnblogs.com/lingq/p/12929868.html