我有一个很大的String
曾被转换为ByteBuffer
&然后在稍后阅读几次时,只需要呈现String
(文本概述)的一部分,因此我只想将ByteBuffer
的一部分转换为String
。
是否可以将bytebuffer的一部分转换为字符串而不是[将整个Bytebuffer
转换为String
&然后使用substring()
]
答案 0 :(得分:2)
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
的构造函数中发生,并且它取决于平台,所以要小心。
答案 1 :(得分:0)
// 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());