JDK-java.nio包详解

JDK-java.nio包详解

概述

        一直以来Java三件套(集合、io、多线程)都是最热门的Java基础技术点,我们要深入掌握好这三件套才能在日常开发中得心应手,之前有编写集合相关的文章,这里出一篇文章来梳理一下io相关的知识点。

一、源码包简单介绍

        JDK中io有两类包:io、nio,其中IO使用流的方式处理文件,包括输入输出两种IO流,每种输入输出流又可分为字节流和字符流两大类。NIO采用内存映射文件来处理输入输出,NIO将文件或文件的一段区域映射到内存中,这样就可以像访问内存一样来访问文件了。Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。其中io和nio的区别如下:

1、io核心概念

(1)输入输出流

    输入流以InputStream和Reader作为基类,而输出流以OutputStream和Writer作为基类。

(2)字节流和字符流

    字节流:InputStream,OutputStream

    字符流:Reader,Writer

2、nio核心概念

(1)Channel(通道):Channel是对传统的输入输出系统的模拟,在NIO系统中所有的数据都需要通过通道传输。

(2)  Buffer(缓冲区):缓冲区(Buffer)是一个包含数据(通常是原始数据如字节)的容器,并提供了一组方法,用于追踪和操作缓冲区中的数据。本质是一个数组,发送到Channel中所有的对象都必须首先放到Buffer中,从Channel中读取的数据也必须先放到Buffer中。

(3)Selector(选择器): 一般称 为选择器 ,当然你也可以翻译为 多路复用器 。它是Java NIO核心组件中的一个,用于检查一个或多个NIO Channel(通道)的状态是否处于可读、可写。如此可以实现单线程管理多个channels,也就是可以管理多个网络链接。

二、源码包中核心类设计

1、io包核心类设计

        前面讲到io流主要分为输入输出流,而输入输出流又分为字符流和字节流,下面我们先看一下输入流的类设计:

        如下图所示是输出流核心类设计:

2、nio包核心类设计

        上面讲到nio有三个核心类:Channel(通道)、Buffer(缓冲区)、Selector(选择器),而这三个核心类的设计如下图所示:

总结

        本文介绍了Java io流的核心设计,java1.4之前只提供了io流的模式,之后推出了nio,文中也对io和nio做了简单的对比。第二小节是对io和nio中核心类的设计做了总结归纳,大家在看jdk的源码过程中可以参考。本文未涉及实例应用以及源码分析,等总结归纳好之后再进行这方面的文章编写。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值