跳转至

Java FileOutputStream教程

原文:http://zetcode.com/java/fileoutputstream/

Java FileOutputStream教程显示了如何使用FileOutputStream类写入 Java 中的文件。

Java FileOutputStream

FileOutputStream是用于将数据写入FileFileDescriptor的输出流。 FileOutputStreamOutputStream的子类,它接受输出字节并将其发送到某个接收器。 在FileOutputStream的情况下,接收器是文件对象。

Java FileOutputStream构造器

这些是FileOutputStream构造器:

  • FileOutputStream(File file) - 创建文件输出流以写入File对象。
  • FileOutputStream(File file, boolean append) - 创建文件输出流以写入File对象; 允许附加模式。
  • FileOutputStream(FileDescriptor fdObj) - 创建文件输出流以写入指定的文件描述符。
  • FileOutputStream(String name) - 创建文件输出流以写入具有指定名称的文件。
  • FileOutputStream(String name, boolean append) - 创建文件输出流以写入具有指定名称的文件; 允许附加模式。

Java FileOutputStream关闭

FileOutputStreamclose()方法关闭文件输出流,并释放与此流关联的所有系统资源。 在我们的示例中,我们使用try-with-resources语句,该语句确保在语句末尾关闭每个资源。

Java FileOutputStream写入

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

  • write(byte[] b) - 将字节数组写入文件输出流。
  • write(byte[] b, int off, int len) - 从指定的字节数组开始将len个字节从offset偏移量写入文件输出流。
  • write(int b) - 将一个字节写入文件输出流。

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 FileInputStream教程Java InputStream教程Java 谓词教程Java 文件时间Java FileWriter教程Java 附加到文件用 Java 读取文本文件用 Java 读写 ICO 图像Java 教程



回到顶部