0

ストリーム/チャネルとの間でビットを読み書きするためのライブラリを作成しています。

チャンネルを操作するときは、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)

4

0 に答える 0