1.java中一切皆为对象,包括流;

2.按照流的方向可以分为:输入流、输出流。对于键盘而言,打字的过程就是输出流,但是这个流对于内存而言就是输入流;

2.1:输出流只能向流中写数据;输入流只能读取数据不能写数据;

2.2:java不能直接操作系统资源,由内核读取文件至内核空间,java程序只能等待,java将数据读取到用户空间,于是	
	io的读取比较占用资源;

3.目前学习的都是基础的BIO(阻塞输入输出),到后面学习nio的时候大致的原理就是java中会申请一片直接缓存区,这个 缓存区内核可以直接访问,java程序也可以直接访问;

nio怎么保证内核已经把数据读完了?1.用一个线程不停地访问;2.操作系统主动通知(轮询)

4.按照操作单元分类

字节流:每次读取或者输出都是一个字节

字符流:每次两个字节(处理文章的数据比较好)

5.按照角色划分

节点流:直接从I/O设备(磁盘、网络)读写数据的流成为节点流;

处理流:连接到已经存在的流之上通过对数据的处理,为程序提供更强大的功能读写功能的流称之为处理流;

比如,洗澡时我们需要水管连接到水箱确保供水,但是如果直接使用由于水流半径比较小不能很好的利用水资源,于是我们在水管处加上花洒,这样处理后的水流就比较用于洗澡,同理不同的喷头可以适用于不同的操作;(其中连接水资源的水管就是节点流,花洒就是处理流)

6.java中的输入出输出体系中常用的流的分类表 alt

7.流的常见继承关系

alt alt

alt