java编程思想 IO10 文件操作源码

package com.dirlist;

import java.nio.*;

public class IntBufferDemo {

	/**
	 * 视图缓冲器,利用视图缓冲器对字节缓冲器进行封装
	 */
	private static final int BSIZE=1024;
	public static void main(String[] args) {
		ByteBuffer bb=ByteBuffer.allocate(BSIZE);
		IntBuffer ib=bb.asIntBuffer();
		ib.put(new int[]{11,42,47,99,143,811,1016});
		System.out.println(ib.get(3));
		ib.put(3,1999);
		ib.flip();
		while(ib.hasRemaining()){
			int i=ib.get();
			System.out.println(i);
		}

	}

}


package com.dirlist;

import java.nio.*;

public class ViewBuffer {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ByteBuffer bb=ByteBuffer.wrap(new byte[]{0,0,0,0,0,0,0,'a'});
		bb.rewind();
		System.out.print("Byte Buffer:");
		while(bb.hasRemaining()){
			System.out.print(bb.position()+" -> "+bb.get()+",");
		}
		System.out.println();
		CharBuffer cb=((ByteBuffer)bb.rewind()).asCharBuffer();
		System.out.print("Char Buffer:");
		while(cb.hasRemaining()){
			System.out.print(cb.position()+" -> "+cb.get()+",");
		}
		System.out.println();
		FloatBuffer fb=((ByteBuffer)bb.rewind()).asFloatBuffer();
		System.out.print("Float Buffer:");
		while(fb.hasRemaining()){
			System.out.print(fb.position()+" -> "+fb.get()+",");
		}
		System.out.println();
		IntBuffer ib=((ByteBuffer)bb.rewind()).asIntBuffer();
		System.out.print("Int Buffer:");
		while(ib.hasRemaining()){
			System.out.print(ib.position()+" -> "+ib.get()+",");
		}
		System.out.println();
		LongBuffer lb=((ByteBuffer)bb.rewind()).asLongBuffer();
		System.out.print("Long Buffer:");
		while(lb.hasRemaining()){
			System.out.print(lb.position()+" -> "+lb.get()+",");
		}
		DoubleBuffer db=((ByteBuffer)bb.rewind()).asDoubleBuffer();
		System.out.println();
		System.out.print("Double Buffer:");
		while(db.hasRemaining()){
			System.out.print(db.position()+" -> "+db.get()+",");
		}
		System.out.println();
		ShortBuffer sb=((ByteBuffer)bb.rewind()).asShortBuffer();
		System.out.print("Short Buffer:");
		while(sb.hasRemaining()){
			System.out.print(sb.position()+" -> "+sb.get()+",");
		}
		System.out.println();
	}

}

package com.dirlist;
import java.nio.*;
import java.util.Arrays;
public class Endians {

	/**
	 * 字节的存放顺序,不同的机器可能会使用不同的字节排序方法来存储顺序。
	 * "big endian" 高位优先将最重要的字节存放在地址最低的存储器单元;
	 * "little endian" 低位优先则是将最重要的字节放在地址做搞的存储器单元
	 * ByteBuffer采用高位优先的形式存储数据
	 */
	public static void main(String[] args) {
		ByteBuffer bb=ByteBuffer.wrap(new byte[12]);
		bb.asCharBuffer().put("abcdef");
		System.out.println(Arrays.toString(bb.array()));
		bb.rewind();
		bb.order(ByteOrder.BIG_ENDIAN);
		bb.asCharBuffer().put("abcdef");
		System.out.println(Arrays.toString(bb.array()));
		bb.rewind();
		bb.order(ByteOrder.LITTLE_ENDIAN);
		bb.asCharBuffer().put("abcdef");
		System.out.println(Arrays.toString(bb.array()));

	}

}
package com.dirlist;

import java.nio.*;

public class UsingBuffers {

	/**
	 * 缓冲区的细节
	 * Buffer由数据和可以高效的访问及操作这些数据的四个索引组成:
	 * 这四个索引是mark(标记),position(位置),limit(界限),capacity(容量)
	 * flip()将limit设置为position,position设置为0,此方法用来从缓冲区读取已写入的数据
	 * mark()将mark设置为position
	 * hasRemaining()若有介于position和limit之间的元素,返回true
	 * capacity()返回缓冲区的容量
	 * clear()清空缓冲区,将position设置为0,limit设置为容量
	 */
	//交换相邻的字符,以对CharBuffer中的字符进行编码和解码
	public static void symmetricScramble(CharBuffer buffer){
		while(buffer.hasRemaining()){
			buffer.mark();
			char c1=buffer.get();
			char c2=buffer.get();
			buffer.reset();
			buffer.put(c2).put(c1);
		}
	}
	public static void main(String[] args) {
		char[] data="UsingBuffers".toCharArray();
		ByteBuffer bb=ByteBuffer.allocate(data.length*2);
		CharBuffer cb=bb.asCharBuffer();
		cb.put(data);
		System.out.println(cb.rewind());
		symmetricScramble(cb);
		System.out.println(cb.rewind());
		symmetricScramble(cb);
		System.out.println(cb.rewind());
		
		

	}

}
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值