1.什么是输入流?什么是输出流?
输入流 :把数据从 其他设备 上读取到 内存 中的流。
输出流 :把数据从 内存 中写出到 其他设备 上的流。
2.输入流读取有几种方式,输出流写出有几种方式?
两种:字节流和字符流。
3.字符流和字节流的区别?
1.字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的 2.字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是如果字符流不使用close方法的话,则不会输出任何内容,说明字符流用的是缓冲区,并且可以使用flush方法强制进行刷新缓冲区,这时才能在不close的情况下输出内容
4.JDK7之前,JDK7和JDK7之后对IO流异常的处理有什么变化?
JDK7之前处理异常需要在try、catch后面加final代码块处理close();代码过于冗余。JDK7之后,只需在try()里面定义io类即可自动关闭流。
在JDK7之后新增加了AutoCloseable接口,而Closeable继承了该接口。能够写在try(...)的括号里面的类对象必须实现AutoCloseable 接口,这样try(...)里面的对象执行完代码块{...}里面的内容后(即大括号里面的内容执行完毕后小括号里面的对象会自动关闭),会自动调用自己的close()方法去关流,所以FileInputStream和FileOutputStream都是实现了AutoCloseable 接口的。
|