Java IO(十九)PrintStream 和 PrintWriter
一、介绍
(一)、PrintStream
PrintStream 是打印输出流,它继承于FilterOutputStream。PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。它还提供其他两项功能。与其他输出流不同,PrintStream 永远不会抛出 IOException;而是,异常情况仅设置可通过 checkError 方法测试的内部标志。另外,为了自动刷新,可以创建一个 PrintStream;这意味着可在写入byte 数组之后自动调用 flush 方法,可调用其中一个 println 方法,或写入一个换行符或字节 ('
')。
PrintStream 打印的所有字符都使用平台的默认字符编码转换为字节。在需要写入字符而不是写入字节的情况下,应该使用 PrintWriter 类。
(二)、PrintWriter
PrintWriter 是字符类型的打印输出流,它继承于Writer。PrintStream 用于向文本输出流打印对象的格式化表示形式。它实现在 PrintStream 中的所有 print 方法。它不包含用于写入原始字节的方法,对于这些字节,程序应该使用未编码的字节流进行写入。
二、构造方法
(一)、PrintStream
(二)、PrintWriter
三、常用API
(一)、PrintStream
PrintStream append(char c) //将指定的字符附加到此输出流。 PrintStream append(CharSequence csq) // 将指定的字符序列附加到此输出流。 PrintStream append(CharSequence csq, int start, int end) // 将指定字符序列的子序列附加到此输出流。 boolean checkError() // 刷新流并检查其错误状态。 void close() // 关闭流。 void flush() // 刷新流。 PrintStream format(Locale l, String format, Object... args) // 使用指定的格式字符串和参数将格式化的字符串写入此输出流。 PrintStream format(String format, Object... args) // 使用指定的格式字符串和参数将格式化的字符串写入此输出流。 void print(boolean b) // 打印布尔值。 void print(char c) // 打印一个字符 void print(char[] s) // 打印字符数组。 void print(double d) // 打印双精度浮点数。 void print(float f) // 打印浮点数。 void print(int i) // 打印一个整数。 void print(long l) // 打印一个长整数。 void print(Object obj) // 打印一个对象。 void print(String s) // 打印字符串。 PrintStream printf(Locale l, String format, Object... args) // 使用指定的格式字符串和参数将格式化的字符串写入此输出流的便利方法。 PrintStream printf(String format, Object... args) // 使用指定的格式字符串和参数将格式化的字符串写入此输出流的便利方法。 void println() // 通过写入行分隔符字符串来终止当前行。 void println(boolean x) // 打印一个布尔值,然后终止该行。 void println(char x) // 打印一个字符,然后终止该行。 void println(char[] x) // 打印一个字符数组,然后终止该行。 void println(double x) // 打印一次,然后终止行。 void println(float x) // 打印一个浮点数,然后终止该行。 void println(int x) // 打印一个整数,然后终止行。 void println(long x) // 打印很长时间,然后终止行。 void println(Object x) // 打印一个对象,然后终止该行。 void println(String x) // 打印一个字符串,然后终止行。 void write(byte[] buf, int off, int len) // 从指定的字节数组写入 len个字节,从偏移 off开始到此流。 void write(int b) // 将指定的字节写入此流。
(二)、PrintWriter
PrintWriter append(char c) // 将指定的字符附加到此输出流。 PrintWriter append(CharSequence csq) // 将指定的字符序列附加到此输出流。 PrintWriter append(CharSequence csq, int start, int end) // 将指定字符序列的子序列附加到此输出流。 boolean checkError() // 如果流未关闭,请刷新流并检查其错误状态。 void close() // 关闭流并释放与之相关联的任何系统资源。 void flush() // 刷新流。 PrintWriter format(Locale l, String format, Object... args) // 使用指定的格式字符串和参数将格式化的字符串写入此写入程序。 PrintWriter format(String format, Object... args) // 使用指定的格式字符串和参数将格式化的字符串写入此写入程序。 void print(boolean b) // 打印布尔值。 void print(char c) // 打印一个字符 void print(char[] s) // 打印字符数组。 void print(double d) // 打印双精度浮点数。 void print(float f) // 打印浮点数。 void print(int i) // 打印一个整数。 void print(long l) // 打印一个长整数。 void print(Object obj) // 打印一个对象。 void print(String s) // 打印字符串。 PrintWriter printf(Locale l, String format, Object... args) // 使用指定的格式字符串和参数将格式化的字符串写入该writer的方便方法。 PrintWriter printf(String format, Object... args) // 使用指定的格式// 符串和参数将格式化的字符串写入该writer的方便方法。 void println() // 通过写入行分隔符字符串来终止当前行。 void println(boolean x) // 打印一个布尔值,然后终止该行。 void println(char x) // 打印一个字符,然后终止该行。 void println(char[] x) // 打印字符数组,然后终止行。 void println(double x) // 打印双精度浮点数,然后终止行。 void println(float x) // 打印一个浮点数,然后终止该行。 void println(int x) // 打印一个整数,然后终止该行。 void println(long x) // 打印一个长整型,然后终止行。 void println(Object x) // 打印一个对象,然后终止该行。 void println(String x) // 打印一个字符串,然后终止行。 void write(char[] buf) // 写入一个字符数组。 void write(char[] buf, int off, int len) // 写一个字符数组的一部分。 void write(int c) // 写一个字符 void write(String s) // 写一个字符串 void write(String s, int off, int len) // 写一个字符串的一部分。
四、实例
public class PrintDemo { public static void main(String[] args) { testPrintStream(); testPrintWriter(); } /** * PrintStream 测试 */ public static void testPrintStream() { try { PrintStream ps = new PrintStream("stream.txt"); ps.write("abcdefg".getBytes()); ps.close(); } catch (Exception e) { e.printStackTrace(); } } /** * PrintWriter 测试 */ public static void testPrintWriter() { try { PrintWriter pw = new PrintWriter("writer.txt"); pw.write(new char[] {'A','B','C','D','E'}); pw.close(); } catch (Exception e) { e.printStackTrace(); } } }