Java IO 总结(一)

来源:互联网 发布:单片机编程基础知识 编辑:程序博客网 时间:2024/05/01 20:58

学习Java中的IO,首先要理解Java中IO的流模型。

所谓流,可以假想成河流,流的数据源,就是河流的发源地,流是单向的,流的单向性,就像河流的水流是单向的一样。

Java中的流可以从两方面的分类:
第一种分类:输入流和输出流
第二种分类:节点流和处理流

输入流和输出流,就是程序和外部的数据源进行IO操作。这些数据源可以是可以是内存,文件,还可以是网络上的一个URL。

输入流和输出流的定义都是相对程序来说的,也就是输入流是从外部读取数据进入程序,然后由程序处理。输出流是从程序中输出的数据。

节点流和处理流。节点流是直接跟数据源连接的流,而处理流是用来装饰节点流的,是为使节点流有更多的功能。

io流       输入流           输出流字节流     InputStream    OutputStream字符流     Reader         Writer

对于上面的字节流和字符流,他们的区别就在于字节流会以字节的形式来处理数据,而字符流会以字符的形式来处理数据。

对于字节流的输入流,就是 InputStream的抽象类向下延伸。因为数据源可以在在文件中,在内存中。所以,一般的字节输入流有 FileInputStream、ByteArrayInputStream 等方法。因此,对应的,就有字节输出流的 FileOutputStream、ByteArrayOutputStream。

而对于字符流的输入流,就是 Reader的抽象类的向下延伸。
同样的,数据源可以在文件中,在内存中。
因此,一般的字符输入流有 FileReader、CharArrayReader等方法。
输出流也相对应。

上面了解了节点流。下面是处理流。

所谓处理流,就是不直接连接到数据源,而是对连接数据流的节点流进行装饰,使得流能提供更多更好的功能。

常见的处理流有

  • 缓冲流。BufferedReader、BufferedWriter、BufferedInputStream、BufferedOutputStream。
    这种流是就是为增加了缓冲功能,提高的IO效率。

  • 字节流转为字符流。 InputStreamReader,InputStreamWriter,当然,可以在创建此类的时候设置字符编码。

  • 对象序列化流。ObjectInputStream、ObjectOutputStream。

  • 各种类型数据的输入输出。DataInputStream、DataOutputStream。

  • 行流。LineNumberReader;LineNumberInputStream

  • 打印流。PrintWriter;PrintOutputStream。

0 0