FileOutputStream VS FileWriter

当我们使用Java往文件写入数据的时候,我们有两种方式,使用FileOutputStream或FileWriter。

FileOutputStream:

File fout = new File(file_location_string);
FileOutputStream fos = new FileOutputStream(fout);
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(fos));
out.write("something");

FileWriter:

FileWriter fstream = new FileWriter(file_location_string);
BufferedWriter out = new BufferedWriter(fstream);
out.write("something");

以上两种方式都可以正常运行,但是它们究竟有何区别呢?

关于以上这两个类,有太多需要讨论,它们都很好的实现了常见操作系统的文件I/O理念。然而,我们并不关心它们是如何设计的,我们关注的是如何选择,以及为什么选择它。

从Java的API规范中是这样描述它们的:

FileOutputStream适用于写入原始字节数据,如图像。

FileWriter适用于字符流的写入。

如果你熟悉设计模式的话,FileWriter是装饰器模式的一个典型应用。我这有一个装饰器模式的简单教程,因为它非常有用,且被应用到很多设计中。

另外,FileOutputStream可以将文件转成字节数组

译文链接:http://www.programcreek.com/2011/03/fileoutputstream-vs-filewriter/

原文地址:https://www.cnblogs.com/chenpi/p/5496959.html