FileWriter与BufferedWriter的区别

来源:互联网 发布:外汇 交易系统测试软件 编辑:程序博客网 时间:2024/05/01 08:25

FileWriter
 FileWriter
Java.lang.Object
  java.io.Writer
      java.io.OutputStreamWriter
          java.io.FileWriter
所有已实现的接口: 
Closeable, Flushable, Appendable

--------------------------------------------------------------------------------

public class FileWriterextends OutputStreamWriter用来写入字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是可接受的。要自己指定这些值,可以先在 FileOutputStream 上构造一个 OutputStreamWriter。

文件是否可用或是否可以被创建取决于基础平台。特别是某些平台一次只允许一个 FileWriter(或其他文件写入对象)打开文件进行写入。在这种情况下,如果所涉及的文件已经打开,则此类中的构造方法将失败。

FileWriter 用于写入字符流。要写入原始字节流,请考虑使用 FileOutputStream。

BufferedWriter
类 BufferedWriter
java.lang.Object
  java.io.Writer
      java.io.BufferedWriter
所有已实现的接口: 
Closeable, Flushable, Appendable

--------------------------------------------------------------------------------

public class BufferedWriterextends Writer将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。

该类提供了 newLine() 方法,它使用平台自己的行分隔符概念,此概念由系统属性 line.separator 定义。并非所有平台都使用新行符 ('/n') 来终止各行。因此调用此方法来终止每个输出行要优于直接写入新行符。

通常 Writer 将其输出立即发送到基础字符或字节流。除非要求提示输出,否则建议用 BufferedWriter 包装所有其 write() 操作可能开销很高的 Writer(如 FileWriters 和 OutputStreamWriters)。例如,

 PrintWriter out
   = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));
 将缓冲 PrintWriter 对文件的输出。如果没有缓冲,则每次调用 print() 方法会导致将字符转换为字节,然后立即写入到文件,而这是极其低效的。

0 0