跳到主要内容

Java OutputStreamWriter 类

提示
  1. 功能和转换OutputStreamWriter 用于将字符数据转换成字节数据,充当字节流和字符流之间的桥梁。
  2. 创建 OutputStreamWriter:可通过链接到 FileOutputStream 实例来创建,并支持指定字符编码(如 UTF8)。
  3. 主要方法:提供 write() 方法写入字符、字符数组或字符串,以及 getEncoding() 来获取字符编码类型,还包括 close()flush() 方法进行流操作。

java.io 包中的 OutputStreamWriter 类可用于将字符形式的数据转换成字节形式的数据。

它扩展了抽象类 Writer

OutputStreamWriter

OutputStreamWriter 类与其他输出流一起工作。它也被称为字节流和字符流之间的桥梁。这是因为 OutputStreamWriter 将其字符转换成字节。

例如,有些字符存储在存储器中需要 2 个字节。要写入此类数据,我们可以使用输出流写入器,它将字符转换成相应的字节并将这些字节存储在一起。

创建 OutputStreamWriter

为了创建一个 OutputStreamWriter,我们首先必须导入 java.io.OutputStreamWriter 包。一旦我们导入了包,以下是我们如何创建输出流写入器的方式。

// 创建一个 OutputStream
FileOutputStream file = new FileOutputStream(String path);

// 创建一个 OutputStreamWriter
OutputStreamWriter output = new OutputStreamWriter(file);

在上面的例子中,我们创建了一个名为 output 的 OutputStreamWriter 和一个名为 file 的 FileOutputStream

这里,我们使用默认的字符编码将字符写入输出流。

然而,我们可以指定要使用的字符编码类型(UTF8UTF16)来写入数据。

// 创建一个指定字符编码的 OutputStreamWriter
OutputStreamWriter output = new OutputStreamWriter(file, Charset cs);

这里,我们使用了 Charset 类来指定字符编码类型。

OutputStreamWriter 的方法

OutputStreamWriter 类为 Writer 类中存在的不同方法提供了实现。

write() 方法

  • write() - 将单个字符写入写入器
  • write(char[] array) - 将指定数组中的字符写入写入器
  • write(String data) - 将指定字符串写入写入器

示例:使用 OutputStreamWriter 将数据写入文件

import java.io.FileOutputStream;
import java.io.OutputStreamWriter;

public class Main {

public static void main(String args[]) {

String data = "This is a line of text inside the file.";

try {
// 创建一个 FileOutputStream
FileOutputStream file = new FileOutputStream("output.txt");

// 创建一个 OutputStreamWriter
OutputStreamWriter output = new OutputStreamWriter(file);

// 将字符串写入文件
output.write(data);

// 关闭写入器
output.close();
}

catch (Exception e) {
e.getStackTrace();
}
}
}

在上述示例中,我们使用文件输出流创建了一个输出流读取器。输出流读取器与 output.txt 文件链接。

FileOutputStream file = new FileOutputStream("output.txt");
OutputStreamWriter output = new OutputStreamWriter(file);

为了将数据写入文件,我们使用了 write() 方法。

此处,当我们运行程序时,output.txt 文件将被以下内容填充。

This is a line of text inside the file.

getEncoding() 方法

getEncoding() 方法可用于获取用于向输出流写入数据的编码类型。例如,

import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
import java.io.FileOutputStream;

class Main {
public static void main(String[] args) {

try {
// 创建一个输出流
FileOutputStream file = new FileOutputStream("output.txt");

// 创建一个带有默认编码的输出流读取器
OutputStreamWriter output1 = new OutputStreamWriter(file);

// 创建一个指定编码的输出流读取器
OutputStreamWriter output2 = new OutputStreamWriter(file, Charset.forName("UTF8"));

// 返回输出流的字符编码
System.out.println("output1 的字符编码: " + output1.getEncoding());
System.out.println("output2 的字符编码: " + output2.getEncoding());

// 关闭读取器
output1.close();
output2.close();
}

catch(Exception e) {
e.getStackTrace();
}
}
}

输出

output1 的字符编码: Cp1252
output2 的字符编码: UTF8

在上述示例中,我们创建了两个名为 output1output2 的输出流写入器。

  • output1 没有指定字符编码。因此 getEncoding() 方法返回默认字符编码。
  • output2 指定了字符编码,UTF8。因此 getEncoding() 方法返回指定的字符编码。

注意:我们使用了 Charset.forName() 方法来指定字符编码类型。要了解更多,请访问 Java Charset(官方 Java 文档)

close() 方法

要关闭输出流写入器,我们可以使用 close() 方法。一旦调用了 close() 方法,我们就不能再使用写入器来写入数据。

OutputStreamWriter 的其他方法

方法描述
flush()强制将写入器中的所有数据写入相应的目的地
append()将指定字符插入当前写入器

要了解更多,请访问 Java OutputStreamWriter(官方 Java 文档)