方法列表,省略一些不重要的方法

    方法签名 含义 备注
    writeBoolean(boolean value) 写入 boolean 值 用一字节 01|00 代表 true|false
    writeByte(int value) 写入 byte 值
    writeShort(int value) 写入 short 值
    writeInt(int value) 写入 int 值 Big Endian,即 0x250,写入后 00 00 02 50
    writeIntLE(int value) 写入 int 值 Little Endian,即 0x250,写入后 50 02 00 00
    writeLong(long value) 写入 long 值
    writeChar(int value) 写入 char 值
    writeFloat(float value) 写入 float 值
    writeDouble(double value) 写入 double 值
    writeBytes(ByteBuf src) 写入 netty 的 ByteBuf
    writeBytes(byte[] src) 写入 byte[]
    writeBytes(ByteBuffer src) 写入 nio 的 ByteBuffer
    int writeCharSequence(CharSequence sequence, Charset charset) 写入字符串

    注意

    • 这些方法的未指明返回值的,其返回值都是 ByteBuf,意味着可以链式调用
    • 网络传输,默认习惯是 Big Endian

    先写入 4 个字节

    1. buffer.writeBytes(new byte[]{1, 2, 3, 4});
    2. log(buffer);

    结果是

    1. read index:0 write index:4 capacity:10
    2. +-------------------------------------------------+
    3. | 0 1 2 3 4 5 6 7 8 9 a b c d e f |
    4. +--------+-------------------------------------------------+----------------+
    5. |00000000| 01 02 03 04 |.... |
    6. +--------+-------------------------------------------------+----------------+

    再写入一个 int 整数,也是 4 个字节

    1. buffer.writeInt(5);
    2. log(buffer);

    结果是

    1. read index:0 write index:8 capacity:10
    2. +-------------------------------------------------+
    3. | 0 1 2 3 4 5 6 7 8 9 a b c d e f |
    4. +--------+-------------------------------------------------+----------------+
    5. |00000000| 01 02 03 04 00 00 00 05 |........ |
    6. +--------+-------------------------------------------------+----------------+

    还有一类方法是 set 开头的一系列方法,也可以写入数据,但不会改变写指针位置