跳到主要内容

Java FileOutputStream 类

提示
  1. 写入文件的功能FileOutputStream 类用于将数据(以字节为单位)写入文件,扩展自 OutputStream 抽象类。
  2. 创建文件输出流:可通过文件路径或文件对象创建 FileOutputStream 实例,还可选择是否追加数据到文件。
  3. FileOutputStream 方法:提供 write() 方法写入数据,flush() 方法强制写入所有缓存数据,和 close() 方法关闭流并释放资源。

java.io 包中的 FileOutputStream 类可用于将数据(以字节为单位)写入文件。

它扩展了 OutputStream 抽象类。

FileOutputStream 类是 Java OutputStream 的子类。

在学习 FileOutputStream 之前,请确保了解 Java 文件

创建 FileOutputStream

为了创建文件输出流,我们首先必须导入 java.io.FileOutputStream 包。导入包后,以下是在 Java 中创建文件输出流的方法。

1. 使用文件路径

// 包括布尔参数
FileOutputStream output = new FileOutputStream(String path, boolean value);

// 不包括布尔参数
FileOutputStream output = new FileOutputStream(String path);

在这里,我们创建了一个输出流,它将链接到由 path 指定的文件。

另外,value 是一个可选的布尔参数。如果它被设置为 true,新数据将被追加到文件中现有数据的末尾。否则,新数据会覆盖文件中的现有数据。

2. 使用文件对象

FileOutputStream output = new FileOutputStream(File fileObject);

在这里,我们创建了一个输出流,它将链接到由 fileObject 指定的文件。

FileOutputStream 的方法

FileOutputStream 类为 OutputStream 类中的不同方法提供了实现。

write() 方法

  • write() - 将单个 byte 写入文件输出流
  • write(byte[] array) - 将指定数组中的字节写入输出流
  • write(byte[] array, int start, int length) - 从数组的 start 位置开始,将等于 length 的字节数写入输出流

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

import java.io.FileOutputStream;

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

String data = "这是文件中的一行文本。";

try {
FileOutputStream output = new FileOutputStream("output.txt");

byte[] array = data.getBytes();

// 向文件写入字节
output.write(array);

output.close();
}

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

在上面的示例中,我们创建了一个名为 output 的文件输出流。文件输出流与文件 output.txt 关联。

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

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

在这里,当我们运行程序时,output.txt 文件将填充以下内容。

这是文件中的一行文本。

注意:程序中使用的 getBytes() 方法将字符串转换为字节数组。

flush() 方法

要清除输出流,我们可以使用 flush() 方法。该方法强制输出流将所有数据写入目的地。例如,

import java.io.FileOutputStream;
import java.io.IOException;

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

FileOutputStream out = null;
String data = "这是 flush 方法的演示";

try {
out = new FileOutputStream("flush.txt");

// 使用 write() 方法
out.write(data.getBytes());

// 使用 flush() 方法
out.flush();
out.close();
}
catch(Exception e) {
e.getStackTrace();
}
}
}

当我们运行程序时,文件 flush.txt 将填充 data 字符串表示的文本。

close() 方法

要关闭文件输出流,我们可以使用 close() 方法。一旦调用该方法,我们就不能再使用 FileOutputStream 的方法。

FileOutputStream 的其他方法

方法描述
finalize()确保调用了 close() 方法
getChannel()返回与输出流相关联的 FileChannel 对象
getFD()返回与输出流相关联的文件描述符

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