Java 为什么需要打印机?

Java 为什么需要打印机?,java,io,printwriter,Java,Io,Printwriter,我真的很困惑各种io类的用途,例如,如果我们有BufferedWriter,为什么我们需要PrintWriter BufferedReader reader = new BufferedReader(new FileReader(file)); String line = null; while(s=br.readline()!=null) { PrintWriter fs = new PrintWriter(new FileWriter(file)); fs

我真的很困惑各种io类的用途,例如,如果我们有BufferedWriter,为什么我们需要PrintWriter

BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;      
while(s=br.readline()!=null) {
      PrintWriter fs = new PrintWriter(new FileWriter(file));
      fs.println(s);
}

如果BufferedWriter无法帮助?我只是不明白这些io类之间的区别,有人能给我解释一下吗?

它们之间没有任何关系。事实上,我很少使用
PrintWriter
,只是暂时转换
System.out
。但无论如何

BufferedWriter
,就像
BufferedReader
/
BufferedInputStream
/
BufferedOutputStream
一样,只使用内存缓冲区(您可以指定大小)装饰封闭的
Writer
,或者接受默认值。这在向网络或基于文件的慢速编写器写入时非常有用。(内容在内存中提交,仅偶尔提交到磁盘,例如)通过在内存中缓冲,速度大大提高-尝试编写只使用
FileWriter
写入一个10 mb文件的代码,然后与围绕它的
BufferedWriter
进行比较

这就是BufferedWriter。它引入了一些方便的方法,但大多数情况下它只提供了这个内存缓冲区

PrintWriter
主要是一个简单的修饰符,它为各种类型(如
String
float
)添加了一些特定的写入方法,因此您不必将所有内容都转换为原始字节

编辑:


已经出现了的
PrintWriter
基本上是一个方便的类。如果您想快速、轻松地将一行文本输出到日志文件中,PrintWriter会使其变得非常简单

三个特点:

  • print
    println
    方法将采用任何数据类型并为您进行转换。不仅仅是
    字符串
  • 相对较新的
    格式
    方法是值得的。现在,用C样式的格式控制输出一行文本在Java中和在C中一样简单
  • 这些方法从不抛出异常!一些程序员害怕永远不会听到事情出错的可能性。但是,如果它是一个一次性的程序或者做一些非常简单的事情,那么它的方便性是很好的。特别是当输出到
    System.out
    System.err
    时,它们很少出错

使用PrintWriter的主要原因是为了访问printXXX方法(如println(int))。实际上,您可以使用PrintWriter写入文件,就像使用System.out写入控制台一样


BufferedWriter是写入文件(或任何其他文件)的有效方法,因为它会在写入文件之前缓冲Java内存中的字符。

Nod,这些Java IO“流”类确实令人困惑。我可以很容易地找到InputStream、OutputStream(仅字节)和缓冲版本,但除此之外,它会令人困惑。缓冲能力2。新Java版本中的额外功能,尝试不混淆新的现有方法,而是通过引导开发人员检查“@since”JavaDoc元素来创建一个新类