Java FileOutputStream
FileOutputStream
之前,您学习了如何使用 FileWriter 将文本写入文件。
FileOutputStream 类的工作方式类似,但它以原始字节的形式写入数据。这意味着您不仅可以将其用于文本文件,还可以用于二进制文件(例如图像、PDF 或音频)。
写入文本文件(基本示例)
本示例使用FileOutputStream将一段简短的文本字符串写入文件。
注意:如果文件已存在,其内容将被替换(覆盖)。
示例
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
// 我们想写的文本
String text = "Hello World!";
// try-with-resources:流将自动关闭
try (FileOutputStream output = new FileOutputStream("filename.txt")) {
output.write(text.getBytes()); // 将文本转换为字节并写入
System.out.println("Successfully wrote to file.");
} catch (IOException e) {
System.out.println("Error writing file.");
e.printStackTrace();
}
}
}
输出结果为:
Successfully wrote to file.
说明: 此程序创建(或覆盖)名为 filename.txt 的文件,并在其中写入 Hello World!。如果一切正常,它会在控制台打印 "成功写入文件。"。否则,它会显示错误消息。
复制二进制文件(实际示例)
FileOutputStream 的真正优势在于它可以处理任何文件类型,而不仅仅是文本文件。以下示例演示如何复制图像文件:
示例
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFile {
public static void main(String[] args) {
// 将 image.jpg 复制到 copy.jpg 中
try (FileInputStream input = new FileInputStream("image.jpg");
FileOutputStream output = new FileOutputStream("copy.jpg")) {
int b;
while ((b = input.read()) != -1) {
output.write(b); // 将每个原始字节写入新文件
}
System.out.println("File copied successfully.");
} catch (IOException e) {
System.out.println("Error handling file.");
}
}
}
说明: 此程序读取 image.jpg 并将其写入 copy.jpg。由于它处理的是原始字节,因此可以复制任何类型的文件——文本、图像、音频或 PDF。
注意: 在上一页中,您看到了用于读取字节的 FileInputStream。在这里,它与用于写入字节的 FileOutputStream 配合使用。它们共同实现了文件复制功能。
追加到文件
默认情况下,FileOutputStream 会覆盖 已存在的文件。要改为添加(追加) 新内容,请将 true 作为第二个参数传递:
示例
import java.io.FileOutputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
String text = "
Appended text!";
// true = append mode (keeps existing content)
try (FileOutputStream output = new FileOutputStream("filename.txt", true)) {
output.write(text.getBytes());
System.out.println("Successfully appended to file.");
} catch (IOException e) {
System.out.println("Error writing file.");
e.printStackTrace();
}
}
}
输出结果为:
Successfully appended to file.
说明:此程序会在 文件名.txt 文件末尾添加 Appended text!(附加文本!),并保留原有内容。
选择合适的类
Java 提供了多种文件写入方式。以下是每种方式的适用场景:
FileWriter- 最适合基本文本文件。简单易用。BufferedWriter- 最适合大型文本文件,因为它速度更快,并且可以轻松添加新行。FileOutputStream- 最适合二进制数据(图像、PDF、音频)或需要完全控制原始字节的情况。

