A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王勃 中级黑马   /  2012-4-24 17:50  /  1901 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java.io中定义了很多流类型(类或抽象类)来实现输入/输出功能;我们可以从不同的角度对其进行分类(这里我从实际实用的角度来分析分类)

首先你得知道你要进行输入还是输出吧!所以
1,根据数据流向的不同,分为输入流和输出流。
           输入流主要由InputStream和Reader作为基类,这一类输入流(包括其派生类),是将数据读到内存中。
    输出流主要是由OutputStream和Writer作为基类,这一类输出流(包括其派生类),是将内存中数据写入到磁盘中。

确定了是输入还是输出操作之后,你是不是就要考虑要以什么样的单位来处理流了吧!所以
2,根据数据处理单位不同,分为字节流和字符流。
        字节流操作的最小数据单元是8位的字节,主要是由InputStream和OutputStream作为基类。
        字符流操作的最小数据单元是16位的字符。主要是由Reader和Writer作为基类。

接着,你是不是该确定你要怎么样输入和输出吧,也就是直接(节点式)还是间接(包装式),所以
3,根据你的对流的包装方式,分为节点流和处理流。
        节点流是从一个特定的数据源(节点)读写数据,没有对流包装。图为:

      处理流是连接在已存在的节点流或处理流之上,再对流的又一次包装,就像管子外再套个管子来输入输出水一样,进而达到更为方便强大的
         读写功能。图为:


然后,我自己整理了一些常用的流:
  IO的5对基本流:
  1.文件流(字节流/节点流):底层的流,用于实现程序和文件之间的互相访问.
                     FileInputStream  在读入不存在的文件时会抛出异常.
                    FileOutputStrea  在执行构造时就会把目的文件的内容清空,除非使用追加方式.
  2.数据流:能够处理基本类型的数据也支持字符的处理流,用于访问各种基本类型的数据
                    DataInputStream
                  DataOutputStream
  3.对象流:
                 ObjectInputStream
                 ObjectOutputStream
4.逐行流(实现对数据的逐行读写的处理流)
                 BufferedReader
                 BufferedWriter
5.转换流/桥梁流:实现字节到字符的转换,中间流,存在于底层流和处理流之间
                InputStreamReader
                OutputStreamWriter
      逐行读入文本的方法:程序<--ReadLine<--BufferedReader<--InputStreamReader<--      FileInputStream<--文件.
  管道流:和线程进行交互的一组数据流
          PipedInputStream
           PipedOutputStream

我想写篇日记作为流的总结,求各位补充,求顶起。

1 个回复

倒序浏览
IO是指内存数据 与磁盘 数据之间的关系,注意相对位置关系, 相对位置 都是 内存。I(in) 是从磁盘 读入到 内存 使用,O(out) 是从 内存 写入到磁盘,持久保存。
OutputStream  从内存写入到磁盘。(相对内存来说 是出out),InputStream   从磁盘读入到内存。 (相对内存来说 是入in)。

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马