📜  Java.io.Writer类(1)

📅  最后修改于: 2023-12-03 14:42:20.831000             🧑  作者: Mango

Java.io.Writer类

Java.io.Writer类是java.io包中的一个重要的抽象类,它提供了字符输出流的基本功能。Writer类的继承树结构如下:

Java.io.Writer类继承结构

主要子类包括:

  • OutputStreamWriter
  • FileWriter
  • CharArrayWriter
  • StringWriter
  • FilterWriter
  • PrintWriter
Writer类主要方法

在Writer类中,最重要的方法为write(char[] cbuf, int off, int len)方法,通过该方法可以将字符数组中的一部分写入字符输出流中。此外,Writer类提供了如下几个重要的方法:

write(int c)

写入单个字符。

参数:

  • c:要写入的字符,一个整数。

异常:

  • IOException:如果发生 I/O 错误。
write(char[] cbuf)

将字符数组写入。

参数:

  • cbuf:要写入的字符数组。

异常:

  • IOException:如果发生 I/O 错误。
write(String str)

将字符串写入。

参数:

  • str:要写入的字符串。

异常:

  • IOException:如果发生 I/O 错误。
write(String str, int off, int len)

将字符串的一部分写入。

参数:

  • str:要写入的字符串。
  • off:字符串中的起始偏移量。
  • len:要写入的字符数。

异常:

  • IOException:如果发生 I/O 错误。
flush()

刷新流。

异常:

  • IOException:如果发生 I/O 错误。
close()

关闭流释放与之关联的所有资源。

异常:

  • IOException:如果发生 I/O 错误。
Java.io.Writer类的使用示例
写入字符数据

下面是使用Java.io.Writer类写入字符数据的例子:

import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class WriterDemo {
    public static void main(String[] args) {
        String data = "hello world";
        try (Writer writer = new FileWriter("output.txt")) {
            writer.write(data);
            writer.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上面的代码通过FileWriter类创建了一个输出流,然后使用try-with-resource语句形式编写程序,最后通过Writer.write方法将数据写入到输出流中。

写入字符数组

下面是使用Java.io.Writer类写入字符数组的例子:

import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;

public class WriterDemo {
    public static void main(String[] args) {
        char[] data = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
        try (Writer writer = new StringWriter()) {
            writer.write(data, 0, data.length);
            System.out.println(writer.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上面的代码通过StringWriter类创建了一个输出流,并在其中写入了一个字符数组。使用try-with-resource语句形式编写程序后,最后使用Writer.toString方法将输出流中的数据转换成字符串,并打印输出。

格式化写入数据

下面是使用Java.io.Writer类格式化写入数据的例子:

import java.io.IOException;
import java.io.PrintWriter;
import java.io.Writer;

public class WriterDemo {
    public static void main(String[] args) {
        int i = 123;
        double d = 3.14;
        boolean b = true;
        try (Writer writer = new PrintWriter(System.out)) {
            ((PrintWriter) writer).printf("i = %d, d = %f, b = %b", i, d, b);
            writer.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上面的代码创建了一个PrintWriter对象,将其封装成Writer对象,并使用printf方法格式化输出数据。

总结

Java.io.Writer类提供了向字符流写入数据的基本功能,能够满足大部分字符输出流的需求。需要注意的是,在使用Writer类时,应当及时关闭流对象以释放与之关联的系统资源,以避免资源泄漏和系统效率变慢的问题。