Writer (字符流写出)

Writer (字符流写出)

java.io.Writer是字符流写出流的父类,而且是一个抽象类。不能创建对象,只能学习他的共性方法。

Writer常用实现类的继承关系

  • java.lang.Object
    • java.io.Writer
      • java.io.OutputStreamWriter
        • java.io.FileWriter
      • java.io.BufferedWriter
      • java.io.PrintWriter

Writer常用的三个实现类: FileWroter, BufferedWriter 和 PrintWriter

共性方法(子类通用)

修饰符和返回值 方法 说明
abstract void close() 关闭此流,但要先刷新它。(关闭前会先flush)
abstract void flush() 刷新该流的缓冲
void writer(char[] cbuf) 写入字符数组。
abstract void write(char[] cbuf, int off, int len) 写入字符数组的某一部分。
void write(int c) 写入单个字符。
void write(String str) 写入字符串。
void write(String str, int off, int len) 写入字符串的某一部分。

FileWriter子类

构造方法

方法 说明
FileWriter(File file) 传入一个File对象
FileWriter(String fileName) 传入一个文件的绝对路径
FileWriter(String fileName, boolean append) append是否为追加,true是追加, false是覆盖, 默认false
FileWriter(File file, boolean append) append是否为追加,true是追加, false是覆盖, 默认false

使用实例:

在文件中写入字符串:

try {
    String path = "D:\\DEV\\eclipse\\workspace\\day13\\testOut.txt";
    // 1. 创建对象
    // 参数true是追加, 不写或者为false是覆盖
    Writer out = new FileWriter(path, true);
    // 第二种创建对象方式
    // Writer out = new FileWriter(new File(path))
    // 2. 开始写出
    out.write("你好");
    // 3. 释放资源
    out.close();
} catch (IOException e) {
    e.printStackTrace();
}

BufferedWriter子类

将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。 可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了(默认8192--8KB)

构造方法

方法 说明
BufferedWriter(Writer out) 一般传入FileWriter对象

使用实例

try {
    // 1. 创建对象
    String path = "D:\\DEV\\eclipse\\workspace\\day13\\testOut.txt";
    Writer out = new BufferedWriter(
        // 参数true是追加, 不写或者为false是覆盖
        new FileWriter(path, true)
    );
    // 2. 开始写出
    out.write("hello word");
    out.flush(); // 用来把缓冲区的数据刷新到磁盘中展示
    // 3. 关闭资源
    out.close(); // 执行flush() 后再释放资源
} catch (IOException e) {
    e.printStackTrace();
}

PrintWriter子类

提供了按行写出到文件的方法

常用构造方法

方法 说明
PrintWriter(File file) 传入一个File对象
PrintWriter(String path) 传入一个文件路径
PrintWriter(Writer out) 传入Writer类型
PrintWriter(OutputStream out) 传入OutputStream类型

常用方法

返回值 方法 说明
void println(重载参数) 写出到文件一行, 可以是基本类型参数或者对象等,
一般常用String, (追加模式)

代码实例

// 读取一行, 写出一行
// 读取a.txt一行, 写入到a_out.txt一行
// 乱码问题使用转换流解决
public class Test5_Line {
    public static void main(String[] args) throws IOException {
        // 读取流
        BufferedReader in = new BufferedReader(
                new FileReader("D:\\a.txt")
        );
        // 写出流
        PrintWriter out = new PrintWriter(
                new FileWriter("D:\\a_out.txt")
        );
        String line = "";
        while ((line = in.readLine()) != null) {
            System.out.println(line); // 读一行
            out.println(line); // 写一行
        }

        in.close();
        out.close();
    }
}
posted @ 2020-05-19 16:27  zpk-aaron  阅读(677)  评论(0编辑  收藏  举报