Writer字符输出流

Writer字符输出流

Writer (抽象类)
    ├── OutputStreamWriter
    │       └── FileWriter
    ├── BufferedWriter
    ├── CharArrayWriter
    ├── PipedWriter
    ├── FilterWriter
    └── PrintWriter

Writer 是 Java 中用于写入字符数据的抽象类,它是所有字符输出流的基类。与 OutputStream(字节输出流)不同,Writer 是以字符为单位写入数据的,适用于处理文本数据

Writer 的默认行为

  • FileWriter:默认构造函数 new FileWriter("file.txt") 会覆盖文件内容。追加需使用带 append 参数的构造函数,例如 new FileWriter("file.txt", true)。
  • BufferedWriter/PrintWriter:这些装饰器类的追加行为同样由底层的 FileWriter 参数决定。

常用方法

  1. void write(int c)

    • 作用: 将指定的字符(低 16 位)写入输出流

    • 参数: c 是要写入的字符(0 到 65535 之间的整数)

      Writer writer = new FileWriter("example.txt");
      writer.write(65); // 写入字符 'A'
      writer.close();
      
  2. void write(char[] cbuf)

    • 作用: 将字符数组 cbuf 中的所有字符写入输出流。

    • 参数: cbuf 是要写入的字符数组

      Writer writer = new FileWriter("example.txt");
      char[] data = {'H', 'e', 'l', 'l', 'o'}; // "Hello" 的字符表示
      writer.write(data); // 写入字符数组
      writer.close();
      
  3. void write(char[] cbuf, int off, int len)

    • 作用: 将字符数组 cbuf 中从偏移量 off 开始的 len 个字符写入输出流

      Writer writer = new FileWriter("example.txt");
      char[] data = {'H', 'e', 'l', 'l', 'o'}; // "Hello" 的字符表示
      writer.write(data, 1, 3); // 写入 "ell"
      writer.close();
      
  4. void write(String str)、void write(String str, int off, int len)

    • 将字符串 str 中的所有字符写入输出流
    • 将字符串 str 中从偏移量 off 开始的 len 个字符写入输出流
  5. void flush()

    • 作用: 刷新输出流,强制将缓冲区中的数据写入目标。
    • 注意: 某些输出流(如 BufferedWriter)会将数据缓存在内存中,调用 flush() 可以确保数据立即写入目标

常用子类

  1. FileWriter: 用于将字符数据写入文件
  2. BufferedWriter: 提供缓冲功能,提高写入效率
  3. OutputStreamWriter: 将字节流转换为字符流(可以指定字符编码)
  4. PrintWriter: 提供方便的打印方法(如 print()println()
posted @ 2025-03-17 21:00  QAQ001  阅读(60)  评论(0)    收藏  举报