(转)NIO 分散和聚集】的更多相关文章

分散和聚集 概述 分散/聚集 I/O 是使用多个而不是单个缓冲区来保存数据的读写方法. 一个分散的读取就像一个常规通道读取,只不过它是将数据读到一个缓冲区数组中而不是读到单个缓冲区中.同样地,一个聚集写入是向缓冲区数组而不是向单个缓冲区写入数据. 分散/聚集 I/O 对于将数据流划分为单独的部分很有用,这有助于实现复杂的数据格式. 分散/聚集 I/O 通道可以有选择地实现两个新的接口: ScatteringByteChannel 和 GatheringByteChannel.一个 Scatter…
IO  是主存和外部设备 ( 硬盘.终端和网络等 ) 拷贝数据的过程. IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成. Java标准io回顾 在Java1.4之前的I/O系统中,提供的都是面向流的I/O系统. InputStream\OutputStream( 字节流 ) :一次传送一个字节. Reader\Writer( 字符流 ) :一次一个字符. NIO nio 是java nonblocking(非阻塞) IO 的简称(还有种解释是 New IO),在jdk1.4 里提…
Channel聚集(gather)写入 聚集写入( Gathering Writes)是指将多个 Buffer 中的数据“聚集”到 Channel. 特别注意:按照缓冲区的顺序,写入 position 和 limit 之间的数据到 Channel . Channel分散(scatter)读取 分散读取( Scattering Reads)是指从 Channel 中读取的数据“分散” 到多个 Buffer 中. 特别注意:按照缓冲区的顺序,从 Channel 中读取的数据依次将 Buffer 填满…
新的输入/输出 (NIO) 库是在 JDK 1.4 中引入的.NIO 弥补了原来的 I/O 的不足,它在标准 Java 代码中提供了高速的.面向块的 I/O.通过定义包含数据的类,以及通过以块的形式处理这些数据,NIO 不用使用本机代码就可以利用低级优化,这是原来的 I/O 包所无法做到的. 在本教程中,我们将讨论 NIO 库的几乎所有方面,从高级的概念性内容到底层的编程细节.除了学习诸如缓冲区和通道这样的关键 I/O 元素外,您还有机会看到在更新后的库中标准 I/O 是如何工作的.您还会了解只…
输入/输出:概念性描述 I/O 简介 I/O ? 或者输入/输出 ? 指的是计算机与外部世界或者一个程序与计算机的其余部分的之间的接口.它对于任何计算机系统都非常关键,因而所有 I/O 的主体实际上是内置在操作系统中的.单独的程序一般是让系统为它们完成大部分的工作. 在 Java 编程中,直到最近一直使用 流 的方式完成 I/O.所有 I/O 都被视为单个的字节的移动,通过一个称为 Stream 的对象一次移动一个字节.流 I/O 用于与外部世界接触.它也在内部使用,用于将对象转换为字节,然后再…
今天是2018年的第三天,真是时光飞逝,2017年的学习计划还没有学习完成,因此继续开始研究学习,那么上一节我们了解了NIO,那么这一节我们进一步来学习NIO相关的知识.那就是通道和缓冲区.Java NIO系统的核心在于:通道(Channel)和缓冲区(Buffer).通道表示打开到 IO 设备(例如:文件.套接字)的连接.若需要使用 NIO 系统,需要获取用于连接 IO 设备的通道以及用于容纳数据的缓冲区.然后操作缓冲区,对数据进行处理.简而言之, Channel 负责传输, Buffer 负…
NIO里对性能提升最显著的是内存映射(memory mapping),内存访问的速度往往比文件访问的速度快几个数量级. 在内存映射之前,还需要看NIO的一些其他的特性. 缓冲区分片 slice()方法根据现有的缓冲区创建一个子缓冲区.也就是说,它创建一个新的缓冲区,新缓冲区与原来的缓冲区的一部分共享数据. package nio; import java.nio.ByteBuffer; public class SliceTest { public static void main(String…
一.分散与聚集 1.分散读取(Scattering Reads):将通道中的数据分散到多个缓冲区中 2.聚集写入(Gathering Writes):将多个缓冲区中的数据聚集到通道中 public void test4() throws IOException{        RandomAccessFile raf1 = new RandomAccessFile("1.txt", "rw");                //1. 获取通道        Fil…
全面解读Java NIO工作原理(3) 2011-12-14 10:31 Rollen Holt Rollen Holt的博客 我要评论(0) 字号:T | T JDK 1.4 中引入的新输入输出 (NIO) 库在标准 Java 代码中提供了高速的.面向块的 I/O.本实用教程从高级概念到底层的编程细节,非常详细地介绍了 NIO 库.您将学到诸如缓冲区和通道这样的关键 I/O 元素的知识,并考察更新后的库中的标准 I/O 是如何工作的.您还将了解只能通过 NIO 来完成的工作,如异步 I/O 和…
前言 只有光头才能变强 回顾前面: 给女朋友讲解什么是代理模式 包装模式就是这么简单啦 本来我预想是先来回顾一下传统的IO模式的,将传统的IO模式的相关类理清楚(因为IO的类很多). 但是,发现在整理的过程已经有很多优秀的文章了,而我自己来整理的话可能达不到他们的水平.并且传统的IO估计大家都会用,而NIO就不一定了. 下面我就贴几张我认为整理比较优秀的思维导图(下面会给出图片来源地址,大家可前往阅读): 按操作方式分类结构图: 字节流的输入和输出对照图: 字符流的输入和输出对照图: 按操作对象…