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's
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
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 便利类,它有一个严重的限制:它使用默认编码,并且不允许我们显式指定编码。 如果必须设置编码,则可以使用OutputStreamWriter
和FileOutputStream
。
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
类。