网站建设服务预算,wordpress小工具代码,深圳微信分销网站公司,logo免费设计无水印JDK-java.nio包详解 概述 一直以来Java三件套#xff08;集合、io、多线程#xff09;都是最热门的Java基础技术点#xff0c;我们要深入掌握好这三件套才能在日常开发中得心应手#xff0c;之前有编写集合相关的文章#xff0c;这里出一篇文章来梳理一下io相关的知识点。…JDK-java.nio包详解 概述 一直以来Java三件套集合、io、多线程都是最热门的Java基础技术点我们要深入掌握好这三件套才能在日常开发中得心应手之前有编写集合相关的文章这里出一篇文章来梳理一下io相关的知识点。
一、源码包简单介绍 JDK中io有两类包io、nio其中IO使用流的方式处理文件包括输入输出两种IO流每种输入输出流又可分为字节流和字符流两大类。NIO采用内存映射文件来处理输入输出NIO将文件或文件的一段区域映射到内存中这样就可以像访问内存一样来访问文件了。Java NIONew IO是从Java 1.4版本开始引入的一个新的IO API可以替代标准的Java IO API。其中io和nio的区别如下 1、io核心概念
1输入输出流 输入流以InputStream和Reader作为基类而输出流以OutputStream和Writer作为基类。
2字节流和字符流 字节流InputStreamOutputStream 字符流ReaderWriter
2、nio核心概念
1Channel通道Channel是对传统的输入输出系统的模拟在NIO系统中所有的数据都需要通过通道传输。
2 Buffer缓冲区缓冲区Buffer是一个包含数据通常是原始数据如字节的容器并提供了一组方法用于追踪和操作缓冲区中的数据。本质是一个数组发送到Channel中所有的对象都必须首先放到Buffer中从Channel中读取的数据也必须先放到Buffer中。
3Selector选择器 一般称 为选择器 当然你也可以翻译为 多路复用器 。它是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的源码过程中可以参考。本文未涉及实例应用以及源码分析等总结归纳好之后再进行这方面的文章编写。