Java IO:PrintWriter
JavaPrintWriter
类(java.io.PrintWriter
)使我们可以将格式化的数据写入底层的Writer
。例如,写入" int"," long"和其他原始数据,其格式设置为文本,而不是其字节值。
如果我们要生成必须混合文本和数字的报告(或者类似报告),则JavaPrintWriter
很有用。 " PrintWriter"类具有与" PrintStream"相同的所有方法,除了用于写入原始字节的方法外。作为Writer的子类,PrintWriter用于编写文本。
PrintWriter示例
这是一个简单的JavaPrintWriter
示例:
FileWriter writer = new FileWriter("d:\data\report.txt"); PrintWriter printWriter = new PrintWriter(writer); printWriter.print(true); printWriter.print((int) 123); printWriter.print((float) 123.456); printWriter.printf(Locale.UK, "Text + data: %1$", 123); printWriter.close();
此示例首先创建一个连接到FileWriter的PrintWriter实例。其次,该示例将"布尔"," int"和" float"写入" PrintWriter"。第三,该示例调用了PrintWriter的高级printf()方法,该方法可以将格式化的数字插入文本字符串中。最后,关闭" PrintWriter"。
PrintWriter构造函数
" PrintWriter"具有多种构造器,使我们可以将其连接到" File"," OutputStream"或者" Writer"。这样," PrintWriter"与其他" Writer"子类有所不同,后者通常具有大多数构造函数,这些构造函数可以将其他" Writer"实例作为参数(除了少数几个,例如" OutputStreamWriter")。
print()和format()
JavaPrintWriter
类包含函数强大的format()
和printf()
方法。两种方法的作用完全相同,但是C程序员更熟悉" printf"这个名称。通过format()和printf()方法,我们可以使用格式字符串以非常高级的方式混合文本和数据。有关format()
和printf()
的更多信息,请参见此页面:
https://docs.oracle.com/javase/tutorial/java/data/numberformat.html
关闭PrintWriter
完成向JavaPrintWriter
写入字符后,我们应该记住将其关闭。关闭" PrintWriter"也会关闭" PrintWriter"正在写入的" Writer"实例。
关闭PrintWriter的方法是调用其close()方法。这是关闭PrintWriter
的样子:
printWriter.close();
我们还可以使用Java 7中引入的try-with-resources构造。这是如何使用try-with-resources构造使用和关闭PrintWriter
外观的方法:
FileWriter writer = new FileWriter("data/report.txt"); try(PrintWriter printWriter = new PrintWriter(writer)){ printWriter.write("Hello World "); printWriter.write((int)123); }
请注意,不再有任何显式的close()
方法调用。 try-with-resources构造可以解决这一问题。
还要注意,第一个FileWriter
实例不是在try-with-resources块内创建的。这意味着try-with-resources块不会自动关闭此FileWriter实例。但是,当关闭PrintWriter时,它也会同时关闭写入的OutputStream实例,因此,当PrintWriter关闭时,FileWriter实例也会关闭。