详解 NIO流
在观看本篇博文前,建议先观看本人博文 —— 《详解 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流的更多相关文章
- 第三天:JS事件详解-事件流
学习来源: F:\新建文件夹 (2)\HTML5开发\HTML5开发\04.JavaScript基础\6.JavaScript事件详解 学习内容: 1)基础概念 2)举例说明: 代码如上,如果用事件 ...
- MySQL系列详解三:MySQL中各类日志详解-技术流ken
前言 日志文件记录了MySQL数据库的各种类型的活动,MySQL数据库中常见的日志文件有 查询日志,慢查询日志,错误日志,二进制日志,中继日志 .下面分别对他们进行介绍. 查询日志 1.查看查询日志变 ...
- iptables实战案例详解-技术流ken
简介 关于iptables的介绍网上有很多的资料,大家可以自己找一些关于iptables的工作原理,以及四表五链的简介,对于学习iptables将会事半功倍.本博文将会例举几个工作中常用的iptabl ...
- 详解 stream流
在本人之前的博文中,我们学习了 I/O流.NIO流的相关概念. 那么,在JDK8的更新内容中,提出了一个新的流 -- stream流 那么,现在,本人就来讲解下这个流: 目录 stream流 常用AP ...
- 《精通并发与Netty》学习笔记(12 - 详解NIO (三) SocketChannel、Pipe)
一.SocketChannelJava NIO中的SocketChannel是一个连接到TCP网络套接字的通道.可以通过以下2种方式创建SocketChannel: 打开一个SocketChannel ...
- 《精通并发与Netty》学习笔记(10 - 详解NIO (一) Channel、Buffer )
一.Java NIO 概述 Java NIO 由以下几个核心部分组成:ChannelsBuffersSelectors虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Bu ...
- 实战!基于lamp安装wordpress详解-技术流ken
简介 LAMP 是Linux Apache MySQL PHP的简写,其实就是把Apache, MySQL以及PHP安装在Linux系统上,组成一个环境来运行动态的脚本文件.现在基于lamp搭建wor ...
- 《精通并发与Netty》学习笔记(15 - 详解NIO中Buffer之position,limit,capacity)
一.前言熟悉NIO的人想必一定不会陌生buffer中position,limit,capacity这三个属性吧,之前在学习的时候遇到一个问题:就是当你先往缓冲区写入一部分数据,然后调用flip()方法 ...
- 《精通并发与Netty》学习笔记(11 - 详解NIO (二) 分散/聚集 Scatter/Gather、Selector)
一.分散/聚集 Scatter/Gather scatter/gather指的在多个缓冲区上实现一个简单的I/O操作,比如从通道中读取数据到多个缓冲区,或从多个缓冲区中写入数据到通道:scatter( ...
随机推荐
- 特征选择与稀疏学习(Feature Selection and Sparse Learning)
本博客是针对周志华教授所著<机器学习>的"第11章 特征选择与稀疏学习"部分内容的学习笔记. 在实际使用机器学习算法的过程中,往往在特征选择这一块是一个比较让人模棱两可 ...
- Python 聊天界面编写
import os from tkinter import * import time os.chdir('E:\\actdata') def main(): def sendMsg():#发送消息 ...
- Linux下段错误(C语言)
问题描述:在Linux下编程有时会出现段错误的提醒,出现这种错误有可能是因为以下几种原因 1.数组越界:如果在初始化或者接收输入时内容超过了定义好的数组元素个数时会出现段错误,Linux的数组越界检查 ...
- python之openpyxl模块(最全总结 足够初次使用)
openpyxl模块 Python_Openpyxl 1. 安装 pip install openpyxl 2. 打开文件 ① 创建 from openpyxl import Workbook # 实 ...
- js中写laravel模板blade语法和PHP逻辑解决方法
在js中是否能够执行blade的语法?或者说在js中能否处理PHP逻辑呢? 答案是,当然的 下面来看需求:在提交表单,完成入库操作后,使用 return redirect(route('admin.u ...
- Java系列之泛型
自从 JDK 1.5 提供了泛型概念,泛型使得开发者可以定义较为安全的类型,不至于强制类型转化时出现类型转化异常,在没有反省之前,可以通过 Object 来完成不同类型数据之间的操作,但是强制类型转换 ...
- 新建基于STM32F103ZET6的工程-HAL库版本
1.STM32F103ZET6简介 STM32F103ZET6的FLASH容量为512K,64K的SRAM.按照STM32芯片的容量产品划分,STM32F103ZET6属于大容量的芯片. 2.下载HA ...
- webpack篇
2017年09月28日 14:08:18 阅读数:4770 https://juejin.im/post/59cb6307f265da064e1f65b9 还是以前一样,有些概念面试可能会考,我都用* ...
- .NET Core项目部署到Linux(Centos7)(九)防火墙配置,允许外网或局域网访问.NET Core站点
目录 1.前言 2.环境和软件的准备 3.创建.NET Core API项目 4.VMware Workstation虚拟机及Centos 7安装 5.Centos 7安装.NET Core环境 6. ...
- springboot actuator 配置安全
springboot actuator监控是什么?类似php的phpinfor()函数,不过actuator更强大,可以查看的数据.状态更多.Actuator是Spring Boot提供的对应用系统的 ...