NIO
平凡的L同学
个人感兴趣的方向:云计算网络,SDN,网络操作系统,量子通信,机器学习,欢迎讨论。
展开
-
NIO缓冲区的基本概念
NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。Java NIO系统的核心在于:通道(Channel)和缓冲区(Buffer)。其中Channel 负责传输, Buffer 负责存储缓冲区(Buffer):缓冲区就像一个数组,可以保存多个相同类型的数据。根据数据类型不同(boolean 除外) ,有以下 Buffer 常原创 2017-05-30 11:41:57 · 1725 阅读 · 0 评论 -
java.nio.ByteBuffer中flip、rewind、clear方法的区别
原文地址:http://www.blogjava.net/sdjxsgb/archive/2013/06/18/400703.html对缓冲区的读写操作首先要知道缓冲区的下限、上限和当前位置。下面这些变量的值对Buffer类中的某些操作有着至关重要的作用:limit:所有对Buffer读写操作都会以limit变量的值作为上限。position:代表对缓冲区进行读写时,当前游标的位置。c转载 2017-06-07 23:10:25 · 622 阅读 · 0 评论 -
分散读取以及聚集写入
分散读取(Scattering Reads)是指从 Channel 中读取的数据“分散”到多个 Buffer 中。数据从通道写入到各个缓冲区中,依次填满0->1->2缓冲区,下面我们通过程序来实现这一操作: RandomAccessFile raf1=new RandomAccessFile("F:\\NIO\\nio\\a.txt","rw"); File原创 2017-06-07 23:24:29 · 682 阅读 · 0 评论 -
NIO中的编码以及解码问题
NIO支持多种字符编码以及解码,下面来测试一个编解码的小例子:首先我们设置一下字符集,然后申请一段空间来存放字符,对这段字符先进行编码,然后解码查看效果,当然编解码的时候格式需要一致,不然会导致乱码的问题 @Test public void test4() throws CharacterCodingException { Charset cs1=Charset.f原创 2017-06-08 21:20:47 · 1489 阅读 · 0 评论 -
NIO Socket传输的简单例子
传统的 IO 流都是阻塞式的。也就是说,当一个线程调用 read() 或 write()时,该线程被阻塞,直到有一些数据被读取或写入,该线程在此期间不能执行其他任务。这种情况下通常是采用多线程来解决阻塞的问题。而Java NIO 是非阻塞模式的。线程从某通道进行读写数据时,若没有数据可用时,该线程可以进行其他任务。线程通常将非阻塞 IO 的空闲时间用于在其他通道上执行 IO 操作,所以单独的线原创 2017-06-10 12:26:35 · 1390 阅读 · 0 评论 -
NIO管道流的操作
在多线程的环境下,线程之间可以通过管道来实现数据交互,而这个管道在NIO中通过Pipe类进行实现,ipe有一个source通道和一个sink通道。数据会被写到sink通道,从source通道读取。下面通过一个例子来进行说明:public void pipeTransfer() throws IOException{ //1. 获取管道 Pipe pipe原创 2017-06-10 12:39:57 · 732 阅读 · 0 评论