1.什么是输入流?什么是输出流?- 输入流 :把数据从其他设备上读取到内存中的流。
- 输出流 :把数据从内存 中写出到其他设备上的流。
2.输入流读取有几种方式,输出流写出有几种方式?
输入流:
字节输入流【InputStream】 2种
- public abstract int read(): 从输入流读取数据的下一个字节。
- public int read(byte[] b): 从输入流中读取一些字节数,并将它们存储到字节数组 b中 。
字符输入流【Reader】2种
- public int read(): 从输入流读取一个字符。
- public int read(char[] cbuf): 从输入流中读取一些字符,并将它们存储到字符数组 cbuf中 。
输出流:
字节输出流【OutputStream】3种
- public void write(byte[] b):将 b.length字节从指定的字节数组写入此输出流。
- public void write(byte[] b, int off, int len) :从指定的字节数组写入 len字节,从偏移量 off开始输出到此输出流。
- public abstract void write(int b) :将指定的字节输出流。
字符输出流【Writer】5种
- void write(int c) 写入单个字符。
- void write(char[] cbuf)写入字符数组。
- abstract void write(char[] cbuf, int off, int len)写入字符数组的某一部分,off数组的开始索引,len写的字符个数。
- void write(String str)写入字符串。
- void write(String str, int off, int len) 写入字符串的某一部分,off字符串的开始索引,len写的字符个数。
3.字符流和字节流的区别?
字符流是以字符为单位读写数据的流
字节流是以字节为单位读写数据的流
4.JDK7之前,JDK7和JDK7之后对IO流异常的处理有什么变化?
JDK7之前 要繁复地try catch finnaly 进行处理IO异常 才能确保资源的释放
JDK7优化后的try-with-resource 语句,该语句确保了每个资源在语句结束时关闭。所谓的资源(resource)是指在程序完成后,必须关闭的对象。
JDK9优化后 对try-with-resource 的改进,对于引入对象的方式,支持的更加简洁。
|