gpt4 book ai didi

java - Java 中的 FileWriter 与 FileOutputStream

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:51:16 25 4
gpt4 key购买 nike

我对 FileWriterFileOutputStream 有点困惑。如我所见source code of FileWriter只有 4 个构造函数,每个构造函数都调用 FileOutputStream 的构造函数。

public FileWriter(String fileName) throws IOException {
super(new FileOutputStream(fileName));
}
public FileWriter(String fileName, boolean append) throws IOException {
super(new FileOutputStream(fileName, append));
}
public FileWriter(File file) throws IOException {
super(new FileOutputStream(file));
}
public FileWriter(File file, boolean append) throws IOException {
super(new FileOutputStream(file, append));
}
public FileWriter(FileDescriptor fd) {
super(new FileOutputStream(fd));
}

在搜索它们之间的差异后,我发现 mentioned here .

FileOutputStream is meant for writing streams of raw bytes such as image data. For writing streams of characters, consider using FileWriter.

FileWriter 如何发挥作用?即使它仍然调用 FileOutputStream 的构造函数而没有任何变化。

最佳答案

FileWriter 是一个 Writer .它是关于编写文本 - 它恰好是将它写入一个文件。它通过持有对 FileOutputStream 的引用来实现,该引用在 FileWriter 构造函数中创建并传递给父类(super class)构造函数。

FileOutputStream 是一个 OutputStream .这是关于写入二进制数据。如果您想向其中写入文本,则需要将文本转换为二进制数据 - 而这正是 FileWriter 所做的。我个人更喜欢使用 FileOutputStream 包裹在 OutputStreamWriter by me 中以允许我指定字符编码(如 FileWriter 总是使用平台默认编码,令人讨厌)。

基本上,FileWriter 是一种让您编写的简单方法:

Writer writer = new FileWriter("test.txt");

代替

Writer writer = new OutputStreamWriter(new FileOutputStream("test.txt"));

除非我通常建议使用接受 CharsetOutputStreamWriter 构造函数的重载。

关于java - Java 中的 FileWriter 与 FileOutputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36250571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com