将ByteBuffer的一部分转换回String

时间:2012-06-26 07:53:19

标签: java string bytebuffer

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

是否可以将bytebuffer的一部分转换为字符串而不是[将整个Bytebuffer转换为String&然后使用substring()]

2 个答案:

答案 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());