在IO包中,打印流是输出信息最方便的类,包含字节打印流(PrintStream)和字符打印流(PrintWriter)。
字节打印流
PrintStream字节打印流是OutputStream字节输出流的子类。System.out是PrintStream的对象。
PrintStream特点:
1.PrintStream类中有许多print方法和println方法的重载形式,可以对多种数据类型进行打印,并保持数据的表示形式。
2.PrintStream不会抛出IOException。
PrintStream的构造函数可以接收字符串路径,File对象和字节输出流。
它的构造函数可以接收字符串路径说明它可以把数据直接打印到文件。和FileOutputStream一样。因为PrintStream也是OutputStream类的子类,所以它也拥有和OutputStream一样的write方法。但是它还有自己的输出方法print。
PrintStream ps = new PrintStream("E:\\printstream.txt");
ps.write(97);
ps.print(98);
ps.close();
输出结果:
a98
在OutputStream类中的write(int b)方法,向输出流写一个字节,只保留低八位,24个高位将被省略。然后由记事本解析,就变成了a。
而print(int b)方法,它会保留数据的表示形式,就会先把数据变成字符串,然后把字符串打印出去,所以98是一个字符串,9是一个字节,8是一个字节。
我们以前使用InputStream类中的read()方法返回值也是int类型的,这其实读出来也是一个字节,然后把它提升为int类型。
字符打印流
PrintWriter字符打印流的构造函数可以接收字符串路径,File对象,字节输出流和字符输出流。
并且还可以在参数中指定是否需要自动刷新。
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(new FileWriter("out.txt"),true);
String line = null;
while((line=bufr.readLine())!=null){
if("over".equals(line))
break;
out.println(line.toUpperCase());
// out.flush();
}
out.close();
bufr.close();
}