io中的装饰者:
我们以及指导了InputStrem(处理字节输入流)和OutputStream(字节输出流)两个基本刘的作用,但是哟偶一个小问题,如果要使用OutputStream输出数据,假设输出的是一个String类型,需要将String转换成字节数组之后在输出,如果要输出的数据是int,则需要将int变成字符串之后在换成自己的数组输出,为了解决这个缺陷,java提供了另外一个类对OutputString类进行了装饰,在OutputString原有的功能基础上扩充了新的功能,这个类就是PrintString类
PrintString类装饰了OutputString:
public class TestDemo01 {
public static void main(String[] args) throws IOException {
PrintStream pu=new PrintStream(new FileOutputStream(new File("E:" + File.separator + "demo" +File.separator + "my.txt")));
pu.println("hello");
pu.println("world");
pu.println(1+1);
pu.println(1+1.1);
}
}
以上的是字节输出流,使用了PrintStrem进行了装饰,那么字节输入流也存在一定的问题:需要先定义数组,之后借助数组实现数据的读取,之后还得将字节数组中的数据转换成字符串,这种操作是很麻烦的。那么Scanner就对象InputString进行了装饰
Scanner对象装饰了InputStream:
public class TestDemo01 {
public static void main(String[] args) throws IOException {
File f=new File("E:"+File.separator+"demo"+File.separator+"my.txt");
InputStream inputStream=new FileInputStream(f);
//对InputStream进行装饰
Scanner scanner=new Scanner(inputStream);
while(scanner.hasNext()) {
System.out.println(scanner.nextLine());
}
scanner.close();
}
}
打印流:
总结:
- InputStream被Scanner装饰了,在InputString的基础上扩充了新的功能
- PrintWriter装饰了OutputStream类
- PrintWriter装饰了Writer类
- BufferReader装饰了Reader