- 浏览: 161443 次
- 来自: ...
文章分类
- 全部博客 (110)
- 网络 (3)
- window (1)
- eclipse (2)
- mysql (3)
- java (43)
- spring (2)
- memcahe (4)
- kestrel (1)
- linux (19)
- maven (1)
- 总结 (1)
- ActiveMQ (1)
- 线程 (6)
- nio (7)
- java pool (1)
- IO (1)
- 架构 (1)
- Hadoop (1)
- Storm (1)
- zookeeper (3)
- 工作进程 (1)
- epoll (3)
- nginx (4)
- uml (1)
- 分布式 (1)
- RMI (4)
- redis (1)
- shell (4)
- 黄金文档 (1)
- office (2)
- linux_setup (1)
- visio (1)
- BIOS (1)
- 回调 (1)
- jvm (1)
- resin (1)
- ssd (0)
- xmpp (1)
最新评论
-
qxjandyc:
hjjjjjjjjjjjjjjjjjjjjjj
(emoji表情) unicode5与unicode6互换 -
一个人旅行:
写的不错哦
(emoji表情) unicode5与unicode6互换
http://blog.sina.com.cn/s/blog_4bc179a80100xiy5.html
此方法位于:java.nio.Buffer Buffer是一个用于特定基本类型数据的容器。
缓冲区是特定基本类型元素的线性有限序列。除内容外,缓冲区的基本属性还包括容量(capacity)、限制(limit)和位置(position):
缓冲区的capacity是它所包含的元素的数量。缓冲区的capacity不能为负并且不能更改。
缓冲区的limit 是第一个不应该读取或写入的元素的索引。缓冲区的limit不能为负,并且不能大于其capacity。
缓冲区的position是下一个要读取或写入的元素的索引。缓冲区的位置不能为负,并且不能大于其limit。对于每个非 boolean 基本类型,此类都有一个子类与之对应。
在使用缓冲区进行输入输出数据之前,必须确定缓冲区的position,limit都已经设置了正确的值。
如果现在想用这个缓冲区进行信道的写操作,由于write()方法将从position指示的位置开始读取数据,在limit指示的位置停止,因此在进行写操作前,先要将limit的值设为position的当前值,再将position的值设为0。这个操作可以通过这个flip()方法实现。
flip()使缓冲区为一系列新的通道写入或相对获取 操作做好准备:它将限制设置为当前位置,然后将位置设置为0,即上边的要求(红色字体表示)。
所以,上边的操作步骤为:buffer.flip();
out.write(buffer);
此方法位于:java.nio.Buffer Buffer是一个用于特定基本类型数据的容器。
缓冲区是特定基本类型元素的线性有限序列。除内容外,缓冲区的基本属性还包括容量(capacity)、限制(limit)和位置(position):
缓冲区的capacity是它所包含的元素的数量。缓冲区的capacity不能为负并且不能更改。
缓冲区的limit 是第一个不应该读取或写入的元素的索引。缓冲区的limit不能为负,并且不能大于其capacity。
缓冲区的position是下一个要读取或写入的元素的索引。缓冲区的位置不能为负,并且不能大于其limit。对于每个非 boolean 基本类型,此类都有一个子类与之对应。
在使用缓冲区进行输入输出数据之前,必须确定缓冲区的position,limit都已经设置了正确的值。
如果现在想用这个缓冲区进行信道的写操作,由于write()方法将从position指示的位置开始读取数据,在limit指示的位置停止,因此在进行写操作前,先要将limit的值设为position的当前值,再将position的值设为0。这个操作可以通过这个flip()方法实现。
flip()使缓冲区为一系列新的通道写入或相对获取 操作做好准备:它将限制设置为当前位置,然后将位置设置为0,即上边的要求(红色字体表示)。
所以,上边的操作步骤为:buffer.flip();
out.write(buffer);
发表评论
-
java final关键字
2012-10-21 21:20 1049Java中的final关键字通常的指的是“这是无法改变的”。它 ... -
Java:List中的toArray()的使用方法
2012-10-16 17:15 1064http://webservices.ctocio.com.c ... -
jvm 参数设置 -D
2012-10-16 14:06 9451、log4j 配置文件 -Dlog4j.configurat ... -
Java核心技术(第8版) – 读书笔记
2012-09-03 15:15 788http://www.coder4.com/archives/ ... -
nio123
2012-09-02 22:39 770123568 -
线程123总结
2012-09-02 22:34 772线程同步的真实意思,其实是“排队”:几个线程之间要排队,一个一 ... -
Arraylist与linkedlist的区别
2012-08-31 16:44 763List: 有顺序的,元素可以重复 遍历:for 迭代 排 ... -
Java RMI之HelloWorld篇
2012-08-29 11:53 584http://www.cnblogs.com/ninahan0 ... -
Comparator和Comparable在排序中 区别
2012-08-21 09:40 743当需要排序的集合或数组不是单纯的数字类型的时候,通常可以使用C ... -
nio 深入
2012-08-03 15:21 726http://www.goldendoc.org/catego ... -
Spring Bean相关的接口、aware接口、FactoryBean
2012-08-02 14:57 37181、 package spring.beansandcon ... -
关系 UML 说明
2012-08-01 22:56 776关联是类之间的一种关系,例如老师教学生,老公和老婆,水壶装水等 ... -
replace和replaceAll 区别
2012-08-01 14:59 812replace和replaceAll是JAVA中常用的替换字符 ... -
JAVA ANNOTATION详解
2012-08-01 14:56 746http://www.cnblogs.com/phoebus0 ... -
Linux 是否支持epoll
2012-07-27 15:50 2577/usr/include/bits/syscall.h 这 ... -
Java中的Enum用法介绍
2012-07-27 09:39 981http://blog.sina.com.cn/s/blog_ ... -
获取本地ip
2012-07-26 09:09 890/** * @Title: getLocalIp ... -
动态代理
2012-07-25 10:29 717http://blog.csdn.net/cz_hyf/art ... -
NIO揭秘-1
2012-07-24 11:15 715http://my.oschina.net/zhangya/b ... -
FileChannel类的简单用法
2012-07-23 20:12 887http://blog.163.com/yf_198407/b ...
相关推荐
本文将深入探讨Java NIO的核心概念、主要组件以及如何在实际应用中使用。 1. **通道(Channel)与缓冲区(Buffer)** - **通道(Channel)**:在NIO中,数据的读写都是通过通道进行的。通道类似于流,但具有双向性,...
buffer.flip(); // 准备写入 outputChannel.write(buffer); ``` 3. **使用选择器**:注册通道到选择器,监听感兴趣的事件。 ```java Selector selector = Selector.open(); SocketChannel channel = SocketChannel....
在Java Socket API中,传统的阻塞I/O基于流(Stream-based)模型,而NIO基于通道(Channel-based)和缓冲区(Buffer-based)模型。以下是Java NIO在Socket通信中的关键知识点: 1. **通道(Channel)**:通道类似于...
- **通道(Channel)**:通道是NIO中的关键概念,它连接`Buffer`与外部实体,如文件或网络套接字,实现数据的读写。通道可以是阻塞的或非阻塞的,后者允许在没有数据可用时不会阻塞程序执行,而是立即返回,这在高并发...
Channels是NIO中的另一个核心概念,它们提供了一种将数据从网络或文件传输到Buffer的方式,反之亦然。`java.nio.channels`包中定义了几种重要的通道接口及其实现,如`FileChannel`、`SocketChannel`等。 - **...
Buffer提供了诸如clear、flip、rewind和mark等方法,用于管理和操作缓冲区中的数据。 2. **通道(Channel)**:通道类似于流,但它是双向的,可以进行读写操作。Java.nio.channels包中定义了多种类型的通道,如...
**Buffer**在NIO中扮演着数据存储和传输的角色。它是一个可被读写的对象,用于暂存数据,并且提供了多种方法来处理这些数据。Buffer的主要特点包括: 1. **动态大小**:Buffer的容量是固定的,但其存储的数据大小是...
这个压缩包“动态演示nio中的buffer相关操作.zip”显然是为了帮助用户直观地理解NIO Buffer的工作机制,通过动态演示来展示Buffer如何存储、读取和传输数据。 在Java NIO中,Buffer是一个特定类型的数组,用于临时...
Java NIO Buffer 是 Java NIO 中的一种重要组件,负责数据的存储和传输。缓冲区是数组,用于存储不同数据类型的数据。在与 NIO 通道交互时,Java NIO Buffer plays a crucial role. 基本缓冲区用法: 1. 写入数据...
buffer.flip(); // 准备解码 // 自定义字符集识别逻辑 for (String charsetName : getPossibleCharsets()) { Charset charset = Charset.forName(charsetName); CharsetDecoder decoder = charset.newDecoder...
JAVA NIO之Buffer(缓冲区)是Java NIO中一个重要的概念,它提供了一种高效的数据处理方式。缓冲区是一个可以写入数据然后从中读取数据的内存块,它被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块...
1. **通道(Channels)**:Java NIO中的通道类似于流,但它们是双向的,可以读写数据。常见的通道类有FileChannel、SocketChannel、ServerSocketChannel和DatagramChannel。 2. **缓冲区(Buffers)**:缓冲区是...
- **缓冲区(Buffer)**:缓冲区是Java NIO中数据读写的基础单元。根据数据类型的不同,Java NIO 提供了多种缓冲区: - **ByteBuffer**:用于基本字节数据的缓冲。 - **CharBuffer**:用于字符数据的缓冲。 - **...
在本篇文章中,我们将深入探讨Java NIO如何读取文件。 一、NIO的基本概念 1. 缓冲区(Buffer):NIO的核心组件,用于存储数据。Java提供了多种Buffer类,如ByteBuffer、CharBuffer、IntBuffer等,分别对应不同数据...
以上代码中,`client.read(buffer)` 是一个异步操作,它将读取的数据放入 `ByteBuffer` 中,然后通过 `flip()` 方法准备数据以便读取。 #### 结论 通过本文的介绍,我们可以看到 NIO.2 引入的异步通道 API 极大地...
在这个主题中,我们将深入探讨Java NIO如何用于写文件,特别是在处理大数据文件时如何提高性能。 首先,理解Java NIO的基本概念非常重要。NIO中的“N”代表“非阻塞”,这意味着在进行I/O操作时,程序可以继续执行...
缓冲区实际上是一块可以读写的内存空间,这块内存空间被封装成NIO Buffer对象,它支持数据的读写操作,并且可以通过flip()方法在读模式和写模式之间切换。 - **Direct Buffer**:直接缓冲区是在本地内存而非Java堆...
NIO的核心组件包括通道(Channel)、缓冲区(Buffer)和选择器(Selector)。通道是数据传输的途径,如文件通道、网络通道等;缓冲区是存储数据的地方,提供了更有效率的数据读写方式;选择器允许单线程管理多个通道...
在IO中,数据通常是直接从流到流的,而在NIO中,数据首先被读入Buffer,然后从Buffer中取出。Buffer支持多种数据类型,如ByteBuffer、CharBuffer、IntBuffer等。Buffer有固定大小,可以预先分配,提高效率。 NIO的...