我有一个大String
的,曾经被转换为ByteBuffer
& 然后在稍后阅读几次时,只String
需要呈现一部分(文本的概述),所以我只想将一部分转换ByteBuffer
为String
.
是否可以仅将字节缓冲区的一部分转换为字符串而不是 [将整个转换Bytebuffer
为String
& 然后使用substring()
]
我有一个大String
的,曾经被转换为ByteBuffer
& 然后在稍后阅读几次时,只String
需要呈现一部分(文本的概述),所以我只想将一部分转换ByteBuffer
为String
.
是否可以仅将字节缓冲区的一部分转换为字符串而不是 [将整个转换Bytebuffer
为String
& 然后使用substring()
]
try {
ByteBuffer bbuf = encoder.encode(CharBuffer.wrap(yourstr));
bbuf.position(0);
bbuf.limit(200);
CharBuffer cbuf = decoder.decode(bbuf);
String s = cbuf.toString();
System.out.println(s);
} catch (CharacterCodingException e) {
}
它应该从字节缓冲区返回从 0. 字节开始到 200 结束的字符。
更确切地说:
ByteBuffer bbuf = ByteBuffer.wrap(yourstr.getBytes());
bbuf.position(0);
bbuf.limit(200);
byte[] bytearr = new byte[bbuf.remaining()];
bbuf.get(bytearr);
String s = new String(bytearr);
其作用相同,但没有明确的字符解码/编码。
当然,解码确实发生在构造函数中,String s
并且它依赖于平台,所以要小心。
// convert all byteBuffer to string
String fullByteBuffer = new String(byteBuffer.array());
// convert part of byteBuffer to string
byte[] partOfByteBuffer = new byte[PART_LENGTH];
System.arraycopy(fullByteBuffer.array(), 0, partOfByteBuffer, 0, partOfByteBuffer.length);
String partOfByteBufferString = new String(partOfByteBuffer.array());