PrintWriter类用于取代java 1.0的PrintStream类,它能正确地处理多字节字符集和国际化文本。Sun最初计划废弃PrintStream而支持PrintWriter,但当它意识到这样作会使太多如今的代码失效(尤为是依赖于System.out的代码),就放弃了这种想法。尽管如此,新编写的代码仍是应当使用PrintWriter而不是PrintStream。java
除了构造函数,PrintWriter类也有与PrintStream几乎相同的方法集。包括:编程
public PrintWriter(Writer out) public PrintWriter(Writer out,boolean autoFlush) public PrintWriter(OutputStream out) public PrintWriter(OutputStream out,boolean autoFlush) public void flush() public void close() public boolean checkError() public void write(int c) public void write(char[] text,int offset,int length) public void write(char[] text) public void write(String s,int offset,int length) public void write(String s) public void print(boolean b) public void print(char c) public void print(int i) public void print(long l) public void print(float f) public void print(double d) public void print(char[] text) public void print(String s) public void print(Object o) public void println() public void println(boolean b) public void println(char c) public void println(int i) public void println(long l) public void println(float f) public void println(double d) public void println(char[] text) public void println(String s) public void println(Object o)
这些方法的行为大多与PrintStream中相同。只有4个write()方法有所例外,它们写入字符而不是字节。此外,若是底层的书写器能正确地处理字符集转换,那么PrintWriter的全部方法也能处理这种转换。这是对非国际化的PrintStream类的改进,但对于网络编程来讲,仍然不太适合。很遗憾,PrintWriter也存在困扰PrintStream类的平台依赖性和错误报告信息量小等问题。网络
下面咱们来看一下PrintWriter的简单示例:函数
package io; import java.io.PrintWriter; public class PrintWriterDemo { public static void main(String[] args) { //true表示调用println时自动刷新输出流 PrintWriter pw = new PrintWriter(System.out, true); pw.println("外国人:ऐ"); } }