PrintWriter 和 FileWriter 而不是使用 File 或使用 File ( JAVA ) 程序

PrintWriter and FileWriter Instead of using File or Using File ( JAVA ) Program

为了简单写了很多,也让你们感到无聊,我只是有一个问题,如果你们能给我另一个例子,也可以使用更简单的东西。

这是代码

PrinterWriter w = new PrinterWriter(new FileWriter("test.txt"));

好的所以上面的工作非常好但是这个

FileWriter fw = new FileWriter("test.txt");

这项工作也是如此

PrintWriter w = PrintWriter(new File("test.text");

好的,现在所有这些都起作用了,但我更关心为什么斜体字起作用了。

我阅读了一些文档并注意到它采用 Writer 作为构造函数参数,FileWriter

的扩展

但如果这是真的那么为什么这不起作用(或者可能起作用)

FileWriter fw = FileWriter(new PrintWriter("test.txt)); 

我还没有确认这是否有效,但我不知道这会做什么(其他的是有道理的)但是任何人都可以解释一点信息吗?

Java 使用装饰器模式提供 Writer/Stream

的专门组合
  • Writer 一个可以写入字符的对象
  • PrintWriter 专门 Writer 提供格式选项,例如换行符(例如 println())或 `printf`` aso
  • OutputStream 要写入字节的对象

所以:

FileWriter("test.txt") 是一个可以写入字符的对象,它被写入文件。

一个PrintWriter(new FilteWriter("test.txt"))是一个提供格式化选项的对象, 将字符写入写入文件的对象。

A PrintWriter(new File("test.txt")) 在语义上是相同的,一个具有格式化选项的编写器,可以将字符写入文件。 (只是没有额外的步骤)

FileWriter fw = FileWriter(new PrintWriter("test.txt)); 不编译。

另外两个常见的作家是 BufferedWriter StringWriterBufferedWritero 针对较大的写入块进行了优化,它仅在缓冲区已满或已刷新时才写入底层 WriterStringWriter 是附加到字符串的基本 "in memory" 实现。

这样:BufferedWriter( new PrintWriter( new FileWriter("test.txt")));" 一个没有格式化选项的基于块的编写器,它使用 PrintWriterFileWriter 将字符写入文件。