在观看本篇博文前,建议先观看本人博文 —— 《详解 IO流》

NIO流:

首先,本人来介绍下什么是NIO流:

概述

Java NIO ( New IO )是从 Java 1.4 版本开始引入的一个新的 IO API 。

可以替代标准的 Java IO API 。

NIO 与原来的 IO 有同样的作用和目的,但是使用的方式完全不同

NIO 支持面向缓冲区的、基于通道IO 操作

NIO 将以更加高效的方式进行文件的读写操作

那么,现在,本人来展示下 IO流 和 NIO流之前的区别

IO NIO
面向 面向缓冲区
阻塞IO(BlockingIO) 即:BIO 非阻塞IO(NonBlockingIO) 即:NIO
(无) 选择器(Selectors)

(在本篇博文中,本人主要讲解第一点区别,至于剩下两点,将在本人之后的博文中进行讲解)

那么,现在,本人来通过两张图来解释下 什么叫做:IO面向流 和 NIO面向缓冲区

IO流

NIO流


Java NIO 系统的核心在于:通道 (Channel)缓冲区(Buffer)

通道表示打开到 IO 设备 ( 例如:文件、套接字 ) 的连接

若需要使用 NIO 系统

需要获取用于连接 IO 设备的通道以及用于容纳数据的缓冲区

然后操作缓冲区对数据进行处理

结论

Channel 负责传输Buffer 负责存储

那么,本人现在就通过两篇博文来讲解下这两个知识点:


首先是 缓冲区(Buffer)

请观看本人博文 —— 《详解 缓冲区(Buffer 抽象类)》


然后是 通道 (Channel)

请观看本人博文 —— 《详解 通道 (Channel 接口)》


最后本人再来讲解下 Paths类 和 Files类

请观看本人博文 —— 《详解 Paths类 与 Files类》

详解 NIO流的更多相关文章

  1. 第三天:JS事件详解-事件流

    学习来源: F:\新建文件夹 (2)\HTML5开发\HTML5开发\04.JavaScript基础\6.JavaScript事件详解 学习内容:  1)基础概念 2)举例说明: 代码如上,如果用事件 ...

  2. MySQL系列详解三:MySQL中各类日志详解-技术流ken

    前言 日志文件记录了MySQL数据库的各种类型的活动,MySQL数据库中常见的日志文件有 查询日志,慢查询日志,错误日志,二进制日志,中继日志 .下面分别对他们进行介绍. 查询日志 1.查看查询日志变 ...

  3. iptables实战案例详解-技术流ken

    简介 关于iptables的介绍网上有很多的资料,大家可以自己找一些关于iptables的工作原理,以及四表五链的简介,对于学习iptables将会事半功倍.本博文将会例举几个工作中常用的iptabl ...

  4. 详解 stream流

    在本人之前的博文中,我们学习了 I/O流.NIO流的相关概念. 那么,在JDK8的更新内容中,提出了一个新的流 -- stream流 那么,现在,本人就来讲解下这个流: 目录 stream流 常用AP ...

  5. 《精通并发与Netty》学习笔记(12 - 详解NIO (三) SocketChannel、Pipe)

    一.SocketChannelJava NIO中的SocketChannel是一个连接到TCP网络套接字的通道.可以通过以下2种方式创建SocketChannel: 打开一个SocketChannel ...

  6. 《精通并发与Netty》学习笔记(10 - 详解NIO (一) Channel、Buffer )

    一.Java NIO 概述 Java NIO 由以下几个核心部分组成:ChannelsBuffersSelectors虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Bu ...

  7. 实战!基于lamp安装wordpress详解-技术流ken

    简介 LAMP 是Linux Apache MySQL PHP的简写,其实就是把Apache, MySQL以及PHP安装在Linux系统上,组成一个环境来运行动态的脚本文件.现在基于lamp搭建wor ...

  8. 《精通并发与Netty》学习笔记(15 - 详解NIO中Buffer之position,limit,capacity)

    一.前言熟悉NIO的人想必一定不会陌生buffer中position,limit,capacity这三个属性吧,之前在学习的时候遇到一个问题:就是当你先往缓冲区写入一部分数据,然后调用flip()方法 ...

  9. 《精通并发与Netty》学习笔记(11 - 详解NIO (二) 分散/聚集 Scatter/Gather、Selector)

    一.分散/聚集 Scatter/Gather scatter/gather指的在多个缓冲区上实现一个简单的I/O操作,比如从通道中读取数据到多个缓冲区,或从多个缓冲区中写入数据到通道:scatter( ...

随机推荐

  1. ubuntu 18.04下virtualbox安装windows虚拟机+增强功能+secureCRT

    先强调一下,我是在Ubuntu里安装windows虚拟机,如果要看如何安装linux虚拟机的话,那么你走错地方了. 我一直使用Linux系统做开发的,选择Ubuntu是因为多数常用软件对Ubuntu支 ...

  2. stm32CubeMx+TrueSTUDIO+uc/os-III移植开发(一)

    自从接触到stm32cubemx后,发现使用起来很方便,用来做项目开发的话,由于是图形化操作界面,工作效率比较快.如果要学习操作系统,以前的IDE如keil,IAR等IDE对操作系统的代码调试起来不够 ...

  3. 谷歌出品EfficientNet:比现有卷积网络小84倍,比GPipe快6.1倍

    [导读]谷歌AI研究部门华人科学家再发论文<EfficientNet:重新思考CNN模型缩放>,模型缩放的传统做法是任意增加CNN的深度和宽度,或使用更大的输入图像分辨率进行训练,而使用E ...

  4. 3分钟学会简单使用Vim

    Vim是一款运行在命令行里的文字编辑器,它是Linux人员的标配.在Windows环境下也可以有特别的用处,比如创建没有文件名的文件(.gitignore). Vim的功能十分强大,以至于有一些人对它 ...

  5. CodeForces 277A 红娘问题(并查子集)

    题目链接 思路如下 这题可以普通的并查集来做,我们把每个人认识的红娘,放到一个同一个集合里面,然后通过 for循环 遍历出现过的编号,看总共有几个集合,当集合的个数大于1的时候,需要的话费rmb的数量 ...

  6. python实现杨辉三角形

    代码实现: # python实现杨辉三角形 def yanghui(): # 定义第一行列表为[1] line = [1] while True: # yield的作用:把一个函数变成生成器,同时返回 ...

  7. MFC之TreeCtrl遍历所有节点

    这个例子,主要是查找树上的某个节点,并展开选中它.采用来了递归方法来实现.主要用到的方法: CTreeCtrl::GetChildItemHTREEITEM GetChildItem( HTREEIT ...

  8. 我去,还在这样读写 excel 这也太低效了吧!

    前言 博文地址:https://sourl.cn/SsD3AM 最近读者小 H 给小黑哥发来私信: 小黑哥,最近我在负责公司报表平台开发,需要导出报表到 excel 中.每次使用 POI 开发,都要写 ...

  9. MySQL 学习之查漏补缺

    1.InnoDB 相关知识点 InnoDB 引擎是将数据划分为若干数据页,页大小一般16 KB,16384个字节. 插入数据是以记录为单位,这些记录在磁盘的存放方式称之为 行格式/记录格式,有 com ...

  10. php simplexml_load_string 返回的对象print_r后,丢失信息?

    <?php $content = '<dblp> <inproceedings key="conf/aaim/He07" mdate="2007- ...