缓冲区和Buffer

import java.nio.IntBuffer;

//=================================================
// File Name : IntBuffer_demo
//------------------------------------------------------------------------------
// Author : Common //主类
//Function : IntBuffer_demo
public class IntBuffer_demo { public static void main(String[] args) {
// TODO 自动生成的方法存根
IntBuffer buf = IntBuffer.allocate(10); //开辟10个大小的缓冲区
System.out.print("1.写入数据之前的position、limit和capacity");
System.out.println("position="+buf.position()+"、limit="+buf.limit()+"、capacity="+buf.capacity());
int temp[] = {3,5,7}; //定义整型数组
buf.put(3); //向缓冲区写入数据
buf.put(temp); //向缓冲区中写入一组数据
System.out.print("2.写入数据之后的position、limit和capacity");
System.out.println("position="+buf.position()+"、limit="+buf.limit()+"、capacity="+buf.capacity());
buf.flip(); //重设缓冲区,改变指针
System.out.print("3.准备输出数据时的position、limit和capacity");
System.out.println("position="+buf.position()+"、limit="+buf.limit()+"、capacity="+buf.capacity());
while(buf.hasRemaining()){
int x = buf.get();
System.out.print(x+"、");
}
} }

创建子缓冲区

import java.nio.IntBuffer;

//=================================================
// File Name : IntBuffer_demo
//------------------------------------------------------------------------------
// Author : Common //主类
//Function : IntBuffer_demo
public class IntBuffer_demo { public static void main(String[] args) {
// TODO 自动生成的方法存根 IntBuffer buf = IntBuffer.allocate(10); //开辟10个大小的缓冲区
IntBuffer sub = null; //定义缓冲区对象
for(int i=0;i<10;i++){
buf.put(2*i+1);
}
buf.position(2);
buf.limit(6);
sub = buf.slice(); //开辟子缓冲区
for(int i=0;i<sub.capacity();i++){
int temp = sub.get(i);
sub.put(temp-1);
}
buf.flip(); //重设缓冲区
buf.limit(buf.capacity()); //设置limit
System.out.println("主缓冲区中的内容:");
while(buf.hasRemaining()){
int x = buf.get(); //取出当前内容
System.out.print(x+"、");
}
} }

import java.nio.IntBuffer;

//=================================================
// File Name : IntBuffer_demo
//------------------------------------------------------------------------------
// Author : Common //主类
//Function : IntBuffer_demo
public class IntBuffer_demo { public static void main(String[] args) {
// TODO 自动生成的方法存根 IntBuffer buf = IntBuffer.allocate(10); //开辟10个大小的缓冲区
IntBuffer read = null; //定义缓冲区对象
for(int i=0;i<10;i++){
buf.put(2*i+1);
}
read = buf.asReadOnlyBuffer(); //创建只读缓冲区
buf.flip(); //重设缓冲区
System.out.println("主缓冲区中的内容:");
while(buf.hasRemaining()){
int x = buf.get(); //取出当前内容
System.out.print(x+"、");
}
System.out.println();
read.put(30); //错误,不可写
} }

Java——新IO 缓冲区与Buffer的更多相关文章

  1. Java 新IO

       NIO提供全新的底层I/O模型.与最初的java.io包中面向流(stream-oriented)概念不同,NIO采用了面向块的概念(block-oriented).在尽可能的情况下,I/O的操 ...

  2. Java -- 新IO -- 目录

    20.1 Java 新IO简介 20.2 缓冲区与Buffer 例:演示缓冲区的操作流程 Class : IntBufferDemo01 20.2.2 深入缓冲区操作 20.2.3 创建子缓冲区 20 ...

  3. Java——新IO 通道

    import java.io.File; import java.io.FileOutputStream; import java.nio.ByteBuffer; import java.nio.ch ...

  4. 怎样获取java新IO的Path文件大小

    import org.junit.Test; import java.io.IOException; import java.nio.file.Files; import java.nio.file. ...

  5. JAVA(六)数据库/网络编程/新IO

    成鹏致远 | lcw.cnblog.com |2014-02-05 数据库 1.JDBC概述 JDBC(Java Database Connectivity,Java数据库连接)提供了一种与平台无关的 ...

  6. JAVA NIO学习二:通道(Channel)与缓冲区(Buffer)

    今天是2018年的第三天,真是时光飞逝,2017年的学习计划还没有学习完成,因此继续开始研究学习,那么上一节我们了解了NIO,那么这一节我们进一步来学习NIO相关的知识.那就是通道和缓冲区.Java ...

  7. Java NIO3:缓冲区Buffer

    在上一篇中,我们介绍了NIO中的两个核心对象:缓冲区和通道,在谈到缓冲区时,我们说缓冲区对象本质上是一个数组,但它其实是一个特殊的数组,缓冲区对象内置了一些机制,能够跟踪和记录缓冲区的状态变化情况,如 ...

  8. java 21 - 15 新IO流 NIO

    1:JDK4  新IO要了解的类 Buffer(缓冲),Channer(通道) 2:JDK7  要了解的新IO类 Path:与平台无关的路径. Paths:包含了返回Path的静态方法. public ...

  9. Java NIO (二) 缓冲区(Buffer)

    缓冲区(Buffer):一个用于特定基本数据类型的容器,由 java.nio 包定义的,所有缓冲区都是 Buffer 抽象类的子类. Java NIO 中的Buffer 主要用于和NIO中的通道(Ch ...

随机推荐

  1. extJs学习基础4 Ext.each的用法

    Ext.onReady(function(){ //案例一 /* var countries = ['Vietnam', 'Singapore', 'United States', 'Russia'] ...

  2. HttpHelper类

    using System;using System.Collections.Generic;using System.Text;using System.Net;using System.IO;usi ...

  3. lucene-查询query->FuzzyQuery相近词语的搜索

    FuzzyQuery是一种模糊查询,它可以简单地识别两个相近的词语.下面以11.10为例进行详细介绍. package ch11; import org.apache.lucene.analysis. ...

  4. 【凯子哥带你学Framework】Activity界面显示全解析

    前几天凯子哥写的Framework层的解析文章<Activity启动过程全解析>,反响还不错,这说明“写让大家都能看懂的Framework解析文章”的思想是基本正确的. 我个人觉得,深入分 ...

  5. iOS事件传递&响应者链条

    原文:http://www.cnblogs.com/Quains/p/3369132.html 主要是记录下iOS的界面触摸事件处理机制,然后用一个实例来说明下应用场景. 一.处理机制 界面响应消息机 ...

  6. iOS中通知中心(NSNotificationCenter)的使用总结

    一.了解几个相关的类 1.NSNotification 这个类可以理解为一个消息对象,其中有三个成员变量. 这个成员变量是这个消息对象的唯一标识,用于辨别消息对象. @property (readon ...

  7. golang学习之旅:方法、函数使用心得

    假设要在$GOPATH/pkg/$GOOS_$GOARCH/basepath/ProjectName/目录下开发一个名为xxx的package.(这里basepath指的是github.com/mic ...

  8. 【BZOJ-3931】网络吞吐量 最短路 + 最大流

    3931: [CQOI2015]网络吞吐量 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1228  Solved: 524[Submit][Stat ...

  9. 虚拟机克隆后找不到eth0

    使用 VMware 虚拟机的克隆功能,快速复制已安装好的 Linux 系统. 克隆完成之后,发现没有 eth0 网卡. [解决方法] 1. 编辑 /etc/udev/rules.d/70-persis ...

  10. bzoj3283: 运算器

    #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...