FileOutputStream 对比 FileWriter
原文地址:http://www.programcreek.com/2011/03/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 实际上是 Decorator模式的典型用法。 我使用一个简单的教程来演示 Decorator 模式,然后就会发现它对于许多设计非常重要,也非常有用。
FileOutputStream 的另外一个应用场景是将文件转换为字节数组。