• Java——新IO 缓冲区与Buffer


    缓冲区和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);			//错误,不可写
    	}
    
    }
    

     

  • 相关阅读:
    PureBasic 打开一个一行有多个数据的文件并读取其中某个数据
    正则表达式的30分钟教程
    【编程珠玑】读书笔记 第一章 开篇
    while ((ch = getchar()) != EOF)中ch定义为char还是int型?cin、scanf等如何结束键盘输入
    itoa函数的实现(不同进制)
    atoi函数的实现(考虑不同进制、溢出)
    函数重载二义性:error C2668: 'pow' : ambiguous call to overloaded function
    strcat与strncat的C/C++实现
    strcpy函数的C/C++实现
    strlen的C/C+++实现
  • 原文地址:https://www.cnblogs.com/tonglin0325/p/5324181.html
Copyright © 2020-2023  润新知