企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# Java `FileOutputStream`教程 原文:http://zetcode.com/java/fileoutputstream/ Java `FileOutputStream`教程显示了如何使用`FileOutputStream`类写入 Java 中的文件。 ## 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`关闭 `FileOutputStream`的`close()`方法关闭文件输出流,并释放与此流关联的所有系统资源。 在我们的示例中,我们使用`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` ```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); } } } ``` 该代码示例将一行写入文件。 ```java try (FileOutputStream fos = new FileOutputStream(fileName)) { ``` `FileOutputStream`构造器采用字符串作为参数; 它是我们写入的文件名。 完成编写后,我们使用`try-with-resources`构造来清理资源。 ```java String text = "Today is a beautiful day"; byte[] mybytes = text.getBytes(); ``` `FileOutputStream`将字节写入文件; 我们使用`getBytes()`方法从字符串中获取字节。 ```java fos.write(mybytes); ``` 字节被写入文件。 ```java $ cat newfile.txt Today is a beautiful day ``` 我们使用`cat`命令显示文件的内容。 ## Java `FileOutputStream`附加到文件 使用`FileOutputStream`可以将数据附加到文件中。 附加的典型用法是日志记录。 `FileOutputStreamAppend.java` ```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); } } } ``` 该代码示例将文本附加到文件。 ```java try (FileOutputStream fos = new FileOutputStream(fileName, true)) { ``` `FileOutputStream`的第二个参数表示我们将附加到文件中。 ## Java `FileOutputStream`指定编码 `FileWriter`类是用于编写字符文件的 Java 便利类,它有一个严重的限制:它使用默认编码,并且不允许我们显式指定编码。 如果必须设置编码,则可以使用`OutputStreamWriter`和`FileOutputStream`。 `FileOutputStreamEncoding.java` ```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`将文本写入文件。 第二个参数是要使用的字符集。 ```java $ cat newwfile.txt Сегодня был прекрасный день. ``` 我们显示文件的内容。 在本教程中,我们介绍了 Java `FileOutputStream`类。 您可能也对相关教程感兴趣: [Java `FileInputStream`教程](/java/fileinputstream/), [Java `InputStream`教程](/java/inputstream/), [Java 谓词教程](/java/predicate/), [Java 文件时间](/articles/javafiletime/), [Java `FileWriter`教程](/java/filewriter/), [Java 附加到文件](/articles/javaappendtofile/),[用 Java 读取文本文件](/articles/javareadtext/),[用 Java 读写 ICO 图像](/articles/javaico/) 和 [Java 教程](/lang/java/)。