java Channel filp compact
import java.nio.ByteBuffer;
//Listing 7-1. Copying Bytes from an Input Channel to an Output Channel
public class ty {
public static void main(String[] args) {
ty t = new ty();
ByteBuffer buffer = t.returnbb();
System.out.println(buffer);
//// 之所以调用ByteBuffer.flip()方法是因为在向ByteBuffer写入数据后,
//// position为缓冲区中刚刚读入的数据的最后一个字节的位置,
//// flip方法将limit值置为position值,position置0,
//// 这样在调用get*()方法从ByteBuffer中取数据时就可以取到ByteBuffer中的有效数据
//当读取时 从头开始,到limit处
buffer.flip();
while (buffer.hasRemaining()) {
System.out.println((char) buffer.get());
}
buffer.flip();
System.out.println("---------------------");
//取出 一个元素
System.out.println((char) buffer.get());
System.out.println("---------------------");
// clear()与compact()方法
// 一旦读完Buffer中的数据,需要让Buffer准备好再次被写入。
// 可以通过clear()或compact()方法来完成。
// 如果调用的是clear()方法,position将被设回0,limit被设置成capacity的值。
// 换句话说,Buffer 被清空了。Buffer中的数据并未清除,
// 只是这些标记告诉我们可以从哪里开始往Buffer里写数据。
// 如果Buffer中有一些未读的数据,调用clear()方法,数据将“被遗忘”,
// 意味着不再有任何标记会告诉你哪些数据被读过,哪些还没有。
// 如果Buffer中仍有未读的数据,且后续还需要这些数据,但是此时想要先先写些数据,
// 那么使用compact()方法。
// compact()方法将所有未读的数据拷贝到Buffer起始处。
// 然后将position设到最后一个未读元素正后面。limit属性依然像clear()方法一样,
// 设置成capacity。现在Buffer准备好写数据了,但是不会覆盖未读的数据
//保留剩余元素 并添加新元素
buffer.compact();
System.out.println(buffer);
buffer.put((byte)'m');
buffer.flip();
while (buffer.hasRemaining()) {
System.out.println((char) buffer.get());
}
}
public ByteBuffer returnbb() {
ByteBuffer buffer = ByteBuffer.allocate();
buffer.put((byte) 'H').put((byte) 'e').put((byte) 'l').put((byte) 'l')
.put((byte) 'o');
buffer.put((byte) 'A');
return buffer;
}
}
output :
java.nio.HeapByteBuffer[pos= lim= cap=]
H
e
l
l
o
A
---------------------
H
---------------------
java.nio.HeapByteBuffer[pos= lim= cap=]
e
l
l
o
A
m
java Channel filp compact的更多相关文章
- java Channel
Channel Channel与流 基本上,所有的 IO 在NIO 中都从一个Channel 开始.Channel 有点象流.数据可以从Channel读到Buffer中,也可以从Buffer 写到Ch ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- Netty学习二:Java IO与序列化
1 Java IO 1.1 Java IO 1.1.1 IO IO,即输入(Input)输出(Output)的简写,是描述计算机软硬件对二进制数据的传输.读写等操作的统称. 按照软硬件可分为: 磁盘I ...
- 20145208 《Java程序设计》第8周学习总结
20145208 <Java程序设计>第8周学习总结 教材学习内容总结 NIO与NIO2 NIO与IO的区别 IO NIO 面向流 面向缓冲 阻 ...
- 20155308 2016-2017-2 《Java程序设计》第8周学习总结
20155308 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 第十四章 NIO与NIO2 NIO(New IO)-from JDK1.4 NIO2 -fr ...
- Java连接MQ的实例, 测试类
package cjf.mq.mqclient; import com.ibm.mq.MQC; import com.ibm.mq.MQEnvironment; import com.ibm.mq.M ...
- 【转】ByteBuffer 到底怎么用?网络编程中一点总结!--不错
原文网址:http://cuisuqiang.iteye.com/blog/1443212 做tcp网络编程,要解析一批批的数据,可是数据是通过Socket连接的InputStream一次次读取的,读 ...
- Java-NIO(二):缓冲区(Buffer)的数据存取
缓冲区(Buffer): 一个用于特定基本数据类行的容器.有java.nio包定义的,所有缓冲区都是抽象类Buffer的子类. Java NIO中的Buffer主要用于与NIO通道进行交互,数据是从通 ...
- ByteBuffer使用实例
ByteBuffer作为JDK的字节流处理对象,这里举个小例子说明下用法,直接上代码: package com.wlf.netty.nettyserver; import org.junit.Asse ...
随机推荐
- android 布局中 layout_gravity、gravity、orientation、layout_weight【转】
线性布局中,有 4 个及其重要的参数,直接决定元素的布局和位置,这四个参数是 android:layout_gravity ( 是本元素相对于父元素的重力方向 ) android:gravity (是 ...
- BZOJ 3224: Tyvj 1728 普通平衡树 treap
3224: Tyvj 1728 普通平衡树 Description 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除 ...
- 最新IP地址数据库
2016年12月1日 最新发行版 265051条数据 基于:国内基于省市区以及运营商 国外基于国家 版本:全球旗舰版 国内精华版 国外拓展版 英文版 掩码版 字段:大洲 国家 省份 城市 县区 运营 ...
- 【spring 区别】ClassXmlAplicationContext和FileSystemXmlApplicationContext的区别
今天写一个简单的spring使用例子,遇到这个问题: 项目结构如下: 代码如下: package com.it.sxd; import java.nio.file.FileSystem; import ...
- AutoMapper使用笔记
AutoMapper是一个.NET的对象映射工具. 项目地址:https://github.com/AutoMapper/AutoMapper. 帮助文档:https://github.com/Aut ...
- .Net AppDomain.CurrentDomain.AppendPrivatePath(@"Libs");
今天就说说.Net中通过反射取得某个类型时,我们怎么知道这个类型在硬盘上的哪个角落?比如说,假如我们需要要求服务端动态载入某个数据源,那服务端怎么知道数据源在哪?网上大部分的教程都写着,可以使用Ass ...
- SU suplane命令学习
各位博友,不足之处,批评指正! 用其他软件打开看看, 注意:下图中应该是倾角,dip=Δt/Δx,单位为ms/traces,
- 追本溯源 解析“大数据生态环境”发展现状(CSDN)
程学旗先生是中科院计算所副总工.研究员.博士生导师.网络科学与技术重点实验室主任.本次程学旗带来了中国大数据生态系统的基础问题方面的内容分享.大数据的发展越来越快,但是对于大数据的认知大都还停留在最初 ...
- 如何获取checkboxlist的多个选中项
string[] array = dt.Rows[0]["s_type"].ToString().Split('|'); foreach (ListI ...
- html ul 里 能放其他标签吗,比如h3、p?
按标准的话,ul 里面应该只能放li,不过看见同事有的放了h3.p这些,这样到底可不可以? <ul>里面只能放<li>.但是<li>里面可以放<h*> ...