原文: https://www.programiz.com/java-programming/fileoutputstream

在本教程中,我们将借助示例学习 Java FileOutputStream及其方法。

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

它扩展了OutputStream抽象类。

Java `FileOutputStream`类 - 图1

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


创建一个FileOutputStream

为了创建文件输出流,我们必须首先导入java.io.FileOutputStream包。 导入包后,就可以使用 Java 创建文件输出流。

1.使用文件的路径

  1. // Including the boolean parameter
  2. FileOutputStream output = new FileOutputStream(String path, boolean value);
  3. // Not including the boolean parameter
  4. FileOutputStream output = new FileOutputStream(String path);

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

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

2.使用文件的对象

  1. FileOutputStream output = new FileOutputStream(File fileObject);

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


FileOutputStream的方法

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

write()方法

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

示例:FileOutputStream将数据写入文件

  1. import java.io.FileOutputStream;
  2. public class Main {
  3. public static void main(String[] args) {
  4. String data = "This is a line of text inside the file.";
  5. try {
  6. FileOutputStream output = new FileOutputStream("output.txt");
  7. byte[] array = data.getBytes();
  8. // Writes byte to the file
  9. output.write(array);
  10. output.close();
  11. }
  12. catch(Exception e) {
  13. e.getStackTrace();
  14. }
  15. }
  16. }

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

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

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

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

  1. This is a line of text inside the file.

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


flush()方法

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

  1. import java.io.FileOutputStream;
  2. import java.io.IOException;
  3. public class Main {
  4. public static void main(String[] args) throws IOException {
  5. FileOutputStream out = null;
  6. String data = "This is demo of flush method";
  7. try {
  8. out = new FileOutputStream(" flush.txt");
  9. // Using write() method
  10. out.write(data.getBytes());
  11. // Using the flush() method
  12. out.flush();
  13. out.close();
  14. }
  15. catch(Exception e) {
  16. e.getStackTrace();
  17. }
  18. }
  19. }

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


close()方法

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


FileOutputStream的其他方法

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

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