ZetCode

Java FileOutputStream

最后修改于 2024 年 1 月 27 日

Java FileOutputStream 教程展示了如何在 Java 中使用 FileOutputStream 类来写入文件。

Java FileOutputStream

FileOutputStream 是一个输出流,用于将数据写入 FileFileDescriptorFileOutputStreamOutputStream 的子类,它接受输出字节并将它们发送到某个接收器。 对于 FileOutputStream,接收器是一个文件对象。

Java FileOutputStream 构造函数

以下是 FileOutputStream 的构造函数

Java FileOutputStream close

FileOutputStreamclose 方法关闭文件输出流并释放与此流关联的任何系统资源。 在我们的示例中,我们使用 *try-with-resources* 语句,以确保每个资源在语句结束时都已关闭。

Java FileOutputStream write

FileOutputStream 使用以下写入方法写入字节

Java FileOutputStream 示例

以下示例使用 FileOutputStream 将文本写入文件。

FileOutputStreamEx.java
package com.zetcode;

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

public class FileOutputStreamEx {

    public static void main(String[] args) throws FileNotFoundException, IOException {
        
        String fileName = "/home/janbodnar/tmp/newfile.txt";
        
        try (FileOutputStream fos = new FileOutputStream(fileName)) {
            
            String text = "Today is a beautiful day";
            byte[] mybytes = text.getBytes();
            
            fos.write(mybytes);
        }
    }
}

该代码示例将一行写入文件。

try (FileOutputStream fos = new FileOutputStream(fileName)) {

FileOutputStream 构造函数接受一个字符串作为参数; 它是我们要写入的文件名。 我们使用 try-with-resources 结构在完成写入后清理资源。

String text = "Today is a beautiful day";
byte[] mybytes = text.getBytes();

FileOutputStream 将字节写入文件; 我们使用 getBytes 方法从字符串中获取字节。

fos.write(mybytes);

字节被写入文件。

$ cat newfile.txt 
Today is a beautiful day

我们使用 cat 命令显示文件的内容。

Java FileOutputStream 追加到文件

使用 FileOutputStream 可以将数据追加到文件中。 追加的典型用法是日志记录。

FileOutputStreamAppend.java
package com.zetcode;

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

public class FileOutputStreamAppend {

    public static void main(String[] args) throws FileNotFoundException, IOException {        
        
        String fileName = "/home/janbodnar/tmp/newfile.txt";
        
        try (FileOutputStream fos = new FileOutputStream(fileName, true)) {
            
            String text = "Today is a beautiful day";
            byte[] mybytes = text.getBytes();
            
            fos.write(mybytes);
        }
    }
}

该代码示例将文本追加到文件。

try (FileOutputStream fos = new FileOutputStream(fileName, true)) {

FileOutputStream 的第二个参数表明我们将追加到文件。

Java FileOutputStream 指定编码

FileWriter 类是一个用于写入字符文件的 Java 便捷类,它有一个严重的限制:它使用默认编码,并且不允许我们显式指定编码。 如果我们必须设置编码,我们可以使用 OutputStreamWriterFileOutputStream

FileOutputStreamEncoding.java
package com.zetcode;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.nio.charset.StandardCharsets;

public class FileOutputStreamEncoding {

    public static void main(String[] args) throws FileNotFoundException, IOException {

        String fileName = "/home/janbodnar/tmp/newfile.txt";

        FileOutputStream fos = new FileOutputStream(fileName);
        
        try (OutputStreamWriter osw =  new OutputStreamWriter(fos, 
                StandardCharsets.UTF_8)) {

            String text = "Сегодня был прекрасный день.";

            osw.write(text);
        }
    }
}

该示例使用 OutputStreamWriter 将文本写入文件。 第二个参数是要使用的字符集。

$ cat newwfile.txt 
Сегодня был прекрасный день.

我们显示文件的内容。

来源

Java FileOutputStream - 语言参考

在本文中,我们介绍了 Java FileOutputStream 类。

作者

我叫 Jan Bodnar,我是一位充满热情的程序员,拥有丰富的编程经验。 自 2007 年以来,我一直在撰写编程文章。 迄今为止,我已经撰写了 1,400 多篇文章和 8 本电子书。 我在编程教学方面拥有超过十年的经验。

列出所有Java教程