ByteBuffer转String的方法
最近做的项目需要用到ByteBuffer进行数据的传输,因此会用涉及到将ByteBuffer转换为String的过程,在这之前我们需要认识一下ByteBuffer:
ByteBuffer俗称缓冲器,是将数据移进移出通道的唯一方式,并且我们只能创建一个独立的基本类型缓冲器,或者使用”as”方法从ByteBuffer中获得。ByteBuffer中存放的是字节数组,如果要将它们转换成字符串则需要使用 Charset,Charset是字符编码,它提供了把字节流转换成字符串 ( 解码 ) 和将字符串转换成字节流 ( 编码) 的方法。以下是实现该过程的方法:


 public static String byteBufferToString(ByteBuffer buffer) {
 CharBuffer charBuffer = null;
 try {
 Charset charset = Charset.forName("UTF-8");
 CharsetDecoder decoder = charset.newDecoder();
 charBuffer = decoder.decode(buffer);
 buffer.flip();
 return charBuffer.toString();
 } catch (Exception ex) {
 ex.printStackTrace();
 return null;
 }
 }

需要说明的是,flip方法会将缓冲区的当前位置”重置”到缓冲区的开始处.这样可以保证传入的对像被其他方法使用时读取的数据完整性.
以上是对ByteBuffer使用的学习笔记,希望有问题可以指出并跟我讨论.\

本文固定链接: http://www.sujunqiang.com/archives/238.html | 苏骏强的博客