博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
6、NIO--分散读取与聚集写入
阅读量:5896 次
发布时间:2019-06-19

本文共 1222 字,大约阅读时间需要 4 分钟。

 

分散读取

分散读取(Scattering Reads)是指从 Channel 中读取的数据“分

散”到多个 Buffer 中。

 注意:按照缓冲区的顺序,从 Channel 中读取的数据依次将 Buffer 填满。

 

聚集写入

聚集写入(Gathering Writes)是指将多个 Buffer 中的数据“聚集”

到 Channel

注意:按照缓冲区的顺序,写入 position 和 limit 之间的数据到 Channel 。

 

测试小实例:

//分散读取和聚集写入    @Test    public void test7() throws IOException {                RandomAccessFile raf = new RandomAccessFile("d:\\a.txt","rw");                //1、获取通道        FileChannel fileChannel = raf.getChannel();                //2、分配指定大小的缓冲区        ByteBuffer buf1= ByteBuffer.allocate(20);        ByteBuffer buf2 = ByteBuffer.allocate(200);                //3、分散读取        ByteBuffer [] bufs = {buf1,buf2};        //read(ByteBuffer[] dsts)         fileChannel.read(bufs);                for(ByteBuffer b : bufs){            b.flip();        }                System.out.println(new String(bufs[0].array(),0,bufs[0].limit()));        System.out.println(new String(bufs[1].array(),0,bufs[1].limit()));                //聚集写入        RandomAccessFile raf2 = new RandomAccessFile("d:\\aa.txt", "rw");        FileChannel fileChannel2 = raf2.getChannel();        //write(ByteBuffer[] srcs)        fileChannel2.write(bufs);            }

 控制台的打印:

文件的写入:

 

 

转载于:https://www.cnblogs.com/Mrchengs/p/10825048.html

你可能感兴趣的文章
java jni 原理_使用JNI技术实现Java和C++的交互
查看>>
java 重写system.out_重写System.out.println(String x)方法
查看>>
mysql client命令行选项
查看>>
配置ORACLE 11g绿色版客户端和PLSQL远程连接环境
查看>>
ASP.NET中 DataList(数据列表)的使用前台绑定
查看>>
Linux学习之CentOS(八)--Linux系统的分区概念
查看>>
JavaScript---事件
查看>>
Android NDK入门实例 计算斐波那契数列一生成jni头文件
查看>>
c/c++性能优化--I/O优化(上)
查看>>
将HTML特殊转义为实体字符的两种实现方式
查看>>
System.Func<>与System.Action<>
查看>>
asp.net开源CMS推荐
查看>>
csharp skype send message in winform
查看>>
MMORPG 游戏服务器端设计--转载
查看>>
SILK 的 Tilt的意思
查看>>
Html学习笔记3
查看>>
HDFS dfsclient写文件过程 源码分析
查看>>
部署P2P升级的脚本
查看>>
ubuntu下安装libxml2
查看>>
nginx_lua_waf安装测试
查看>>