Java IO:PrintStream
JavaPrintStream
类(java.io.PrintStream
)使我们可以将格式化的数据写入底层的OutputStream。 " PrintStream"类可以格式化诸如" int"," long"等原语类型,其格式为文本,而不是其字节值。这就是为什么将其称为PrintStream的原因,因为它将原始值格式化为文本,就像打印到屏幕(或者打印到纸张)时的样子一样。
PrintStream示例
这是一个简单的JavaPrintStream
示例:
PrintStream printStream = new PrintStream(outputStream); printStream.print(true); printStream.print((int) 123); printStream.print((float) 123.456); printStream.close();
此示例首先创建一个连接到OutputStream的PrintStream。其次,该示例将三个原始值打印到PrintStream
中。第三,该示例关闭" PrintStream"。
为了简洁起见,在示例中省略了PrintStream写入的OutputStream的实例化。 PrintStream具有多种构造函数,使我们可以将其连接到File,OutputStream等。
System.out和System.err是PrintStreams
我们可能熟悉Java中的两个著名的PrintStream实例:System.out和System.err。如果我们都使用了这两个流中的任何一个,那么我们已经使用了PrintStream
。
printf()
JavaPrintStream
类包含函数强大的format()
和printf()
方法(它们的函数完全相同,但是C程序员更熟悉" printf"的名称)。这些方法使我们可以使用格式字符串以非常高级的方式混合文本和数据。
这是一个简单的Javaprintf()
示例:
PrintStream printStream = new PrintStream(outputStream); printStream.printf(Locale.UK, "Text + data: %1$", 123); printStream.close();
有关format()
和printf()
的更多信息,请参见JavaDoc。
关闭PrintStream
完成将数据写入" PrintStream"后,我们应该记住将其关闭。关闭PrintStream
也将关闭PrintStream
正在写入的OutputStream
实例。
关闭PrintStream是通过调用其close()方法完成的。这是关闭PrintStream
的样子:
printStream.close();
我们还可以使用Java 7中引入的try-with-resources构造。这是如何使用try-with-resources构造使用和关闭PrintStream
外观的方法:
OutputStream output = new FileOutputStream("data/data.bin"); try(PrintStream printStream = new PrintStream(output)){ printStream.writeInt(123); printStream.writeFloat(123.45F); printStream.writeLong(789); }
请注意,不再有任何显式的close()
方法调用。 try-with-resources构造可以解决这一问题。
还要注意,第一个FileOutputStream
实例不是在try-with-resources块内创建的。这意味着try-with-resources块不会自动关闭此FileOutputStream实例。但是,当关闭PrintStream时,它也会同时关闭写入的OutputStream实例,因此,当PrintStream关闭时,FileOutputStream实例也将关闭。