0

我正在编写一个库,用于从/向 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
}

在这种情况下,doesallocateDirect(1)总是比allocate(1)?

4

0 回答 0