1字节长的ByteBuffer分配或allocateDirect

时间:2013-05-28 06:53:30

标签: java nio bytebuffer

我正在编写一个库,用于从/向Streams / Channels读取/写入位。

使用Channels时,我使用1字节长的ByteBuffer。

以下是如何使用这些ByteBuffer进行读/写。

//@Override // commented for pre 5
public int readUnsignedByte() throws IOException {

    buffer.clear(); // ------------------------------------------- clear

    for (int read = -1;;) {
        read = input.read(buffer); // ----------------------------- read
        if (read == -1) {
            throw new EOFException("eof");
        }
        if (read == 1) {
            break;
        }
    }

    buffer.flip(); // --------------------------------------------- flip

    return (buffer.get() & 0xFF); // ------------------------------- get
}


//@Override // commented for pre 5
public void writeUnsignedByte(final int value) throws IOException {

    buffer.put((byte) value); // ----------------------------------- put

    buffer.flip(); // --------------------------------------------- flip

    while (output.write(buffer) != 1); // ------------------------ write

    buffer.clear(); // ------------------------------------------- clear
}

在这种情况下,allocateDirect(1)总是优于allocate(1)吗?

0 个答案:

没有答案