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教程。