一、什么是IO
指的Java的输入和输出操作,I/O机制是基于数据流进行输入输出。
java.io是大多数面向数据流的输入输出类的主要软件包,此外,Java也对块传输提供支持,在核心库java.nio中采用的是快IO。
流IO简单易用,但效率较低。块IO效率很高,但编程比较复杂。
二、数据流分类
按照流中的数据分为:
1)字节流:数据流中最小数据单元是字节
2)字符流:数据流中最小数据单元是字符,Java的字符是Unicode编码,一个字符占2个字节
三、IO体系层次结构
四、java.io基本类库
1、四个基本类
2、IO框架
五、inputStream与reader,outputStream和writer差别
InputStream和OutputStream类处理的是字节流,Reader与Writer处理的是字符流,在处理字符流时涉及了字符编码的转换问题
Reader类能够将输入流中采用其他编码类型的字符转换为Unicode字符,然后在内存中为其分配内存;Writer类能够将内存中的Unicode字符转换为其他编码类型的字符,再写到输出流中。
六、如何选择IO流
1、确定数据源和数据目的(输入/输出)
源:输入流 InputStream Reader
目的:输出流 OutputStream Writer
2、明确操作的数据对象是否是纯文本
是:字符流Reader,Writer
否:字节流InputStream,OutputStream
3、明确具体的设备。
1)是硬盘文件:File++:
读取:FileInputStream,, FileReader,
写入:FileOutputStream,FileWriter
2)是内存用数组
byte[]:ByteArrayInputStream, ByteArrayOutputStream
3)是char[]:CharArrayReader, CharArrayWriter
4)是String:StringBufferInputStream(已过时,因为其只能用于String的每个字符都是8位的字符串), StringReader, StringWriter
5)是网络用Socket流
6)是键盘:用System.in(是一个InputStream对象)读取,用System.out(是一个 OutoutStream对象)打印
4、是否需要转换流
是,就使用转换流,从Stream转化为Reader,Writer:InputStreamReader, OutputStreamWriter
5、是否需要缓冲提高效率
是就加上Buffered:BufferedInputStream, BufferedOuputStream, BuffereaReader, BufferedWriter5)是否需要格式化输出
七、IOException异常类的子类
1.public class EOFException :
非正常到达文件尾或输入流尾时,抛出这种类型的异常。
2.public class FileNotFoundException:
当文件找不到时,抛出的异常。
3.public class InterruptedIOException:
当I/O操作被中断时,抛出这种类型的异常。
参考地址:http://blog.csdn.net/hguisu/article/details/7418161