初识IO流

1.1流概念

流是字节或字符数据的数据源或目的,用以隐藏数据传输细节,可以从流读取数据或将数据写到流,Java程序不能直接操纵I/O设备,而是在程序和设备之间加入了一个中间介质

1.2流的分类
  • 流可以分为BIO、NIO和AIO三大类。
  • BIO即同步阻塞I/O模式,数据的读取写入必须阻塞在一个线程内等待其完成
  • NIO即同步非阻塞,一个线程不断的轮询每个输入输出的状态改变,如果有状态发生了改变,则进行下一步的 操作
  • AIO即异步非阻塞I/O模型,无需一个线程去轮询所有IO操作的状态改变,在相应的状态改变后,系统会通知 对应的线程来处理。

1.21按流向分为输入流和输出流,可以从输入流读取数据但不能写,要从输入流读取数据,则必须有一个与这个 流相关的字符源

1.22按传输单位分为字节流和字符流

  • Java具备平台无关性,这里的字节是指8位,字符是16位
  • 字节流从InputStream/OutputStream派生出来,以字节为基本处理单位,一般用于操作二进制数据, 字节次序是有意义的
  • 字符流从Reader/Writer派生出来的,以16位的Unicode码表示字符为基本处理单位,一般用于操作字符 数据
  • 使用桥接流可以实现两个流之间的转换

1.23按功能还可以分为节点流和过滤流

  • 节点流:负责数据源和程序之间建立连接,结点流对特定的地方读写
  • 过滤流:用于给节点增加功能,过滤流使用结点流进行输入/输出并添加附加功能

注意:I/O流是一类很宝贵的资源,使用完后必须调用close()方法关闭流并释放资源。在关闭流时只用关闭外层 的流

  • 字符流的两个顶层父类:Reader和Writer

  • 字节流的两个顶层父类:InputStream和OutputStream

  • 输入输出靠reader和writer, inputstream和outputstream四个类和子类支持

  • 读入的内容有对象,字符,图像和声音等

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值