为了简单起见,也让你们感到无聊,我只想问一个问题,你们是否可以使用更简单的方法给我另一个例子。
这是代码
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));
我尚未确认这是否行得通,但我仍然看不到它会做什么(其他意义),但有人能解释一下哪怕是一点点信息吗?
答案 0 :(得分:1)
Java使用Decorator模式来提供Writer / Stream的专门组合
Writer
一个可以向其写入字符的对象PrintWriter
专业的Writer
,提供格式选项,例如换行符(例如println()
)或`printf` aso OutputStream
一个向其写入字节的对象所以:
FileWriter("test.txt")
是一个您可以向其中写入字符并写入文件的对象。
PrintWriter(new FilteWriter("test.txt"))
是提供格式选项的对象,
将字符写入到写入文件的对象中。
PrintWriter(new File("test.txt"))
在语义上是相同的,它是具有格式设置选项的作家,可以将字符写入文件。 (无需额外的步骤)
FileWriter fw = FileWriter(new PrintWriter("test.txt));
无法编译。
另外两个常见的作家是BufferedWriter
StringWriter
。 BufferedWriter
o会优化较大的写入块,仅在缓冲区已满或刷新时才写入基础Writer
。 StringWriter
是附加到字符串的基本“内存中”实现。
具有这样的功能:BufferedWriter( new PrintWriter( new FileWriter("test.txt")));"
是基于块的编写器,没有格式设置选项,它使用PrintWriter
和FileWriter
将字符写入文件。