BufferByte的使用

最近用到BufferByte来缓存大量数据,然后就遇到了BufferByte的array()方法无法使用的情况,

而当数据比较少的时候,array()方法可以正常使用。

BufferByte buffer=BufferByte.allocate(22222222);
BufferByte转byte[]:
byte[] b=new byte[len];
buffer.get(b,0,b.length);


byte[]存到BufferByte中:

buffer.put(b,0,b.length);

上述转化过程在网上都可以找到,但是现在出现了一个问题,就是先把数据读入BufferByte,

但是直接读取却无法读取,或者采用循环的方式将分段的数据存入BufferByte时可能会出现

程序卡住的情况。此时就需要position(int pos)这个方法来重新指定开始读取数据的位置。

buffer.get()这个方法执行一次之后,指针会下移一位,如果再次buffer.get(),那么读

取的就是下一位字符。此时就需要注意是从什么位置开始读取数据,什么时候需要重置读取

位置。

此外,我们需要谨慎使用flip(),此方法会改变limit值,给分段多次存储带来不便。

public void testTransfer(){
	  /*  ByteBuffer buffer=ByteBuffer.allocate(256);
		buffer.put(TestString.hexStringToBytes("fffff"),0,4); 
		System.out.println(buffer.toString());*/
		String s="14086E29B8A0042299484348A69A2C491D34D202314A2ABA8C70A78A194380A78A063853B14143A8A007629D8A005C53A980B4EC5002E2971400B8A5C5020C51400B49400518";
		String s1="567886E29B8A0042299484348A69A2C491D34D202314A2ABA8C70A78A194380A78A063853B14143A8A007629D8A005C53A980B4EC5002E2971400B8A5C5020C51400B49400518";
		String s2="999999329B8A0042299484348A69A2C491D34D202314A2ABA8C70A78A194380A78A063853B14143A8A007629D8A005C53A980B4EC5002E2971400B8A5C5020C51400B49400518";
		System.out.println(s);
		byte[] b=TestString.hexStringToBytes(s);
		ByteBuffer buffer=ByteBuffer.allocate(222222);
		
		/*buffer.get(b, 0, b.length);
		buffer.position(0);
		System.out.println(buffer.get());
		System.out.println(buffer.get());
		System.out.println(buffer.get());*/
		
		
//		ByteBuffer buffer=ByteBuffer.wrap(b);
//		buffer.wrap(b);
//		buffer.put((byte)'a');
		buffer.position(0);//从下标为1的地方开始插入数据
		buffer.put(s.getBytes(), 0, s.length());
		
		System.out.println("buffer=================="+buffer);
		
		buffer.position(s.length());//从下标为1的地方开始插入数据
		buffer.put(s1.getBytes(), 0, s1.length());
		
		System.out.println("buffer=================="+buffer);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值