学习笔记之Java IO整理概要

IO实际上就是input & output,解释起来就是输入和输出。对于一个完整的计算机系统,IO绝对是不可缺少的一部分。没有了IO,计算机也就没有了数据的源头和目标。IO在计算机系统中是复杂多样的,磁盘、网络、扫描、显示、打印等都是IO,对于一个特定的IO设备,通常我们的操作系统会有一个程序模块,就是驱动。也多亏了操作系统,封装了驱动等偏底层的内容,使得应用者还开发者可以以更通用的方式来看待复杂多样的输入输出。而无论是和操作系统层面关联更密切的C,还是有了JVM的高级语言Java,对IO的部分都进行了封装,屏蔽了底层的繁琐细节,而建立了抽象的模型,为上层开发提供了方便。

下面简要整理下,本篇以及后面一系列文章所要整理到的内容。

  • 字节流。java.io包中的InputStreamOutputStream两个类及各具体子类,这是Java IO发展过程当中最早就有的内容。
  • 字符流。java.io包中的ReaderWriter类以及具体子类。在字节流处理的基础上,封装了编码等内容,提供了字符级别的处理,更方便开发。
  • 文件处理。输入输出最基本的就是通过磁盘文件进行,Java IO中的文件处理也很重要。这其中包括File类的使用、FileInputStream/FileOutputStream、RandomAccessFile以及文件的映射和锁定等。
  • Socket相关。除了最基本的文件处理,企业级开发中网络的数据传输在Java IO中有很多要点,而对于网络的输入输出我们都是通过Socket以及其他java.net包中的类进行的。
  • NIO。这一内容是从JDK1.4开始正式新增的,包括java.nio和子包。所谓NIO,很多朋友的理解是non-blocking IO,但貌似更正式的解释是New IO,当然其中也具有了一些对非阻塞(non-blocking)的支持。在NIO中,Buffer和Channel是主要的角色。
  • Selector和IO复用。和NIO紧密结合,很多应用开发,尤其是对Socket数据通信相关的处理中,Selector发挥了很重要的作用,使得同一个线程可以处理多个连接发来的请求,节省了资源。
  • 序列化。其实在java.io包中还包含了像Serializable和Externalizable,目的就是方便进行和输入输出相关的序列化和反序列化操作。
  • Java 7 AIO。在JavaSE7的API和JDK1.7中,在java.nio.channels包中增加了一些和AIO相关的内容。
Java NIO

《Java NIO》封面

Java的JDK对IO的支持从1.0到1.1,再到1.4和1.7都有着很大的变化,目的就在于提高IO的性能和IO工具使用的方便性。可见Java IO的重要性,NIO同时成为了大量连接处理所采用的主要策略,这也成为了很多大公司面试官面试的重要题目。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值