IO 流

一、什么是IO


指的Java的输入和输出操作,I/O机制是基于数据流进行输入输出。

java.io是大多数面向数据流的输入输出类的主要软件包,此外,Java也对块传输提供支持,在核心库java.nio中采用的是快IO。

流IO简单易用,但效率较低。块IO效率很高,但编程比较复杂。

二、数据流分类


按照流中的数据分为:

1)字节流:数据流中最小数据单元是字节

2)字符流:数据流中最小数据单元是字符,Java的字符是Unicode编码,一个字符占2个字节

三、IO体系层次结构


IO 流_第1张图片

四、java.io基本类库


1、四个基本类

IO 流_第2张图片

2、IO框架

IO 流_第3张图片
IO 流_第4张图片

五、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

你可能感兴趣的:(IO 流)