之前曾经介绍过 PrintStream, 它可以将Java的基本数据型态等数据,直接转换为系统预设编码下对应的字符,再输出至OutputStream中,而这边要介绍的 PrintWriter其功能上与PrintStream类似,除了接受OutputStream之外,它还可以接受Writer对象作为输出的对象,当 您原先是使用Writer对象在作处理 ,而现在想要套用println()之类的方法时,使用PrintWriter会是比较方便的作法。
下面这个程序显示了PrintStream与PrintWriter两个对象在处理相同输出目的时的作法,程序将会在屏幕上显示 "简体中文" 四个字符:
package onlyfun.caterpillar;
import java.io.*;
public class StreamWriterDemo {
public static void main(String[] args) {
try {
byte[] sim = {(byte)0xbc, (byte)0xf2,?// 简
(byte)0xcc, (byte)0xe5,?// 体
(byte)0xd6, (byte)0xd0,?// 中
(byte)0xce, (byte)0xc4};?// 文
InputStreamReader inputStreamReader =
new InputStreamReader(
new ByteArrayInputStream(sim), "GB2312");
PrintWriter printWriter =
new PrintWriter(
new OutputStreamWriter(System.out, "GB2312"));
PrintStream printStream =
new PrintStream(System.out, true, "GB2312");
int in;
while((in = inputStreamReader.read()) != -1)?{
printWriter.println((char)in);
printStream.println((char)in);
}
inputStreamReader.close();
printWriter.close();
printStream.close();
}
catch(ArrayIndexOutOfBoundsException e) {
e.printStackTrace();
}
catch(IOException e) {
e.printStackTrace();
}
}
}
要能正确看到执行的结果,您的终端机程序必须支持GB2312简体中文编码的显示。