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 ...
随机推荐
- SVN学习安装总结
前言: 第一次接触SVN的时候并不是自己学习SVN的时候,而是再看师哥师姐做项目的时候,看着他们打开SVN向上传东西的时候,我就在想,这是个什么东西,需要每个人都安装吗?大胆的我也就问了 ...
- VMware 虚拟机网络 组网问题
1.VMware虚拟机组网概述 整个结构: 需要确定的内容: 1) 虚拟机连接到哪个VMnet(交换机)? 2) VMnet(交换机)的组网模式? 首先,讲一下VMware的界面内容 安装好VMwar ...
- MySQL的优化技术总结
MySQL的优化技术总结 如果Cache很大,把数据放入内存中的话,那么瓶颈可能是CPU瓶颈或者CPU和内存不匹配的瓶颈: seek定位的速度,read/write即读写速度: 硬件的提升是最有效的方 ...
- Java Web应用调优线程池
最简单的单线程 我们先从基础开始.无论使用哪种应用服务器或者框架(如Tomcat.Jetty等),他们都有类似的基础实现.Web服务的基础是套接字(socket),套接字负责监听端口,等待TCP连接, ...
- Xamarin.Android提示aapt退出,代码为255
Xamarin.Android提示aapt退出,代码为255 错误信息:”aapt.exe”已退出,代码为255.出现这种问题,通常是由于该项目所使用Android SDK不完整.通过SDK Mana ...
- BZOJ1103 [POI2007]大都市meg(DFS序)
题目:一颗树,单边修改,链上查询..实际上链是根到结点的链.网上好像有其他做法,我的想法是这样的: 先不看修改,毫无疑问查询只是查询结点的深度:而修改一条边会有什么影响:影响是且只是以边上深度最深结点 ...
- 胜利大逃亡[HDU1253]
胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submi ...
- 有关g++编译调试的问题
打了个指针版的treap,想用gdb调试,用gcc -g ×××.cpp -o a 时却报错了——直接用gcc编译却不会报错,提示:对‘operator new(unsigned int)’未定义的引 ...
- 使用 Java 开发并生成 .jar 文件
1. 编写文件 D:\test\Hello.java: package test; public class Hello { public static void main(String argv[] ...
- [leetCode][001] Maximum Product Subarray
题目: Find the contiguous subarray within an array (containing at least one number) which has the larg ...