当我们使用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/
时间: 2024-11-14 09:58:47