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");

两种方法都可以写文件,但是使用FileOutputStream和FileWriter有什么分别呢?

对比这两个类有很多讨论,它们都实现了普通操作系统的i/o概念。我们不需要关心它们是怎么设计的,我们仅仅需要知道选择使用哪个,以及为什么使用它。

Java API中的解释:

FileOutputStream是用来输出原始字节流的,如图像数据。要输出字符流,则使用FileWriter。

如果你对于设计模式也熟悉的话,FileWriter是典型的装饰者模式。我已经写过教程来解释装饰者模式了,因为它对于很多设计来说都很重要。

FileOutputStream的一个应用就是将文件转换成字节数组

原文链接: Programcreek 翻译: ImportNew.com - 唐小娟
译文链接: http://www.importnew.com/8440.html
[ 转载请保留原文出处、译者和译文链接。]

关于作者: 唐小娟

一名在路上的程旭媛

查看唐小娟的更多文章 >>



可能感兴趣的文章

发表评论

Comment form

(*) 表示必填项

3 条评论

  1. huangyunbin 说道:

    FileWriter只是FileOutputStream的一个装饰器而已吧,最终都是FileOutputStream。
    public FileWriter(File file) throws IOException {
    super(new FileOutputStream(file));
    }

    Thumb up 1 Thumb down 0

  2. 小松鼠 说道:

    写的不错,有一定参考价值

    Thumb up 0 Thumb down 0

  3. 至尊幽蓝 说道:

    开头的举例并没有反映OutputStream和Writer的区别,OutputStream通过OutputStreamWriter转换成了Writer,写方法用的也都是写字符串,区别何在?

    Thumb up 0 Thumb down 0

跳到底部
返回顶部