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 的改进,对于引入对象的方式,支持的更加简洁。 
 |