Java FileOutputStream
最后修改于 2024 年 1 月 27 日
Java FileOutputStream 教程展示了如何在 Java 中使用 FileOutputStream 类来写入文件。
Java FileOutputStream
FileOutputStream 是一个输出流,用于将数据写入 File 或 FileDescriptor。 FileOutputStream 是 OutputStream 的子类,它接受输出字节并将它们发送到某个接收器。 对于 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 close
FileOutputStream 的 close 方法关闭文件输出流并释放与此流关联的任何系统资源。 在我们的示例中,我们使用 *try-with-resources* 语句,以确保每个资源在语句结束时都已关闭。
Java FileOutputStream write
FileOutputStream 使用以下写入方法写入字节
write(byte[] b)— 将字节数组写入文件输出流。write(byte[] b, int off, int len)— 从指定的字节数组中从偏移量 off 开始,将 len 个字节写入文件输出流。write(int b)— 将一个字节写入文件输出流。
Java FileOutputStream 示例
以下示例使用 FileOutputStream 将文本写入文件。
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 可以将数据追加到文件中。 追加的典型用法是日志记录。
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 便捷类,它有一个严重的限制:它使用默认编码,并且不允许我们显式指定编码。 如果我们必须设置编码,我们可以使用 OutputStreamWriter 和 FileOutputStream。
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教程。