打印流概述以及打印流的使用
打印流也是缓冲流的一种
打印流就是从程序中单向的输出到外界文件中
- 从服务端向客户端中输出数据的时候就可以使用打印流
打印流分为:
-
PrintStream
- PrintStream是字节打印流,可以将字节数据打印到文件中
-
PrintWriter
-
PrintWriter是字符打印流,可以将字符数据答打印到文件中
-
如果是需要写出字符而不是字节,这个时候我们就使用PrintWriter类
- PrintStream打印的所有字符都使用平台的默认字符编码转换为字节后以字节形式输出到文件中
-
打印流的作用是什么?
- 打印流不仅仅可以输出文字,还可以输出字节数据
打印流实现了将基本数据类型的数据转换为字符串形式输出到文件中
- PrintStream和PrintWriter中提供了一系列的重载print()方法和println()方法,用于多种数据类型的写出
PrintStream和PrintWriter都有自动刷新的功能(要通过PrintStream类的两个参数的构造方法和PrintWriter类的两个参数的构造方法的第二个参数来指明是否自动刷新)
- 如果第二个参数为true就是自动刷新
- 也就是PrintStream和PrintWriter都有自动调用flush()方法的功能
注意: System.out返回的是一个PrintStream的实例
这里我们通过一个程序来理解打印流是什么
eg:
问题: 输出ASCII编码表中的所有字符,换行输出
package IO流.打印流;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
public class Demo1 {
public static void main(String[] args) throws IOException{
/*
我们创建字节节点输出流的对象
*/
FileOutputStream fos = new FileOutputStream("hello.txt");
/*
创建字节打印流的对象
这里的第二个参数就是控制打印流是否是自动刷新
如果设置为自动刷新,这个时候只要是遇到换行符或者字节'\n'都会进行刷新
*/
PrintStream ps = new PrintStream(fos,true);
/*
如果打印流对象存在,就设置标准输出流输出位置为我们打印流对象ps对应的位置处
*/
if(ps != null){
System.setOut(ps);
}
/*
遍历输出ASCII中的字符,输出到hello.txt文件中
*/
for(int i = 0;i<=255;i++){
System.out.println((char)i);
}
/*
流资源的关闭
*/
ps.close();
}
}
补充:
- PrintStream和PrintWriter的输出不会抛出IOException
- 也就是调用PrintStream类中和PrintWriter类中的write()方法都不会抛出异常
- 但是我们其他的节点流和缓冲流中调用write()方法都会抛出IOException
- 也就是调用PrintStream类中和PrintWriter类中的write()方法都不会抛出异常