📅  最后修改于: 2023-12-03 14:42:20.831000             🧑  作者: Mango
Java.io.Writer类是java.io包中的一个重要的抽象类,它提供了字符输出流的基本功能。Writer类的继承树结构如下:
主要子类包括:
在Writer类中,最重要的方法为write(char[] cbuf, int off, int len)
方法,通过该方法可以将字符数组中的一部分写入字符输出流中。此外,Writer类提供了如下几个重要的方法:
write(int c)
写入单个字符。
参数:
异常:
write(char[] cbuf)
将字符数组写入。
参数:
异常:
write(String str)
将字符串写入。
参数:
异常:
write(String str, int off, int len)
将字符串的一部分写入。
参数:
异常:
flush()
刷新流。
异常:
close()
关闭流释放与之关联的所有资源。
异常:
下面是使用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类时,应当及时关闭流对象以释放与之关联的系统资源,以避免资源泄漏和系统效率变慢的问题。