在使用 ByteBuffer 替换 InputStream 时,遇到了一个问题,就是 InputStream 的 read 方法与 ByteBuffer 的 get 方法是不一样的,在遇到小于 0 的 byte 就会出错。
InputStream 的 read() 方法读取一个 byte,返回一个无符号数,范围 0~255
/**
* Reads the next byte of data from the input stream. The value byte is
* returned as an <code>int</code> in the range <code>0</code> to
* <code>255</code>. If no byte is available because the end of the stream
* has been reached, the value <code>-1</code> is returned.
*/
public abstract int read() throws IOException;
ByteBuffer 的 get() 方法读取一个 byte,返回一个有符号数,范围 -128-127
/**
* Relative <i>get</i> method. Reads the byte at this buffer's
* current position, and then increments the position.
*
* @return The byte at the buffer's current position
*
* @throws BufferUnderflowException
* If the buffer's cu