2

我有一个大String的,曾经被转换为ByteBuffer& 然后在稍后阅读几次时,只String需要呈现一部分(文本的概述),所以我只想将一部分转换ByteBufferString.

是否可以仅将字节缓冲区的一部分转换为字符串而不是 [将整个转换BytebufferString& 然后使用substring()]

4

2 回答 2

3
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并且它依赖于平台,所以要小心。

于 2012-06-26T08:02:43.210 回答
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());
于 2017-07-14T04:09:55.850 回答