Scanner流和打印流

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

猜你喜欢

转载自blog.csdn.net/qq_42539533/article/details/87901532