nettyのByteBufのデモ

NettyのByteBufのデモ

1。概要

 * Nettyの内部データ構造はバイトであり、readIndexフィールドとwriteIndexフィールドがあり、読み取りと書き込みの位置を示します
 * [破棄可能|読み取り可能|書き込み可能]
 * [readIndexwriteIndex容量]
 

2.共通API
 * ByteBuf buffer = Unpooled.buffer(20)初期容量のバフを作成します
 * in.readerIndex()現在の読み取りポインターを取得します
 * in.writerIndex()現在の書き込みポインターを取得します
 * in.markReaderIndex()マークを付けますシングル読み取りポインタ
 * in.readByte()バイトの読み取り
 * in.resetReaderIndex()現在の読み取りポインタのリセット
 * in.readableBytes()読み取り可能数
 * in.readBytes(byte [])バイト配列データへの読み取り
 * writeByte(data)データの書き込み
 * readBytes(size)データを新しいバイトに読み取ります

3、デモ

public static void main(String[] args) {
		
		ByteBuf buffer = Unpooled.buffer(20); // 创建一个空的byteBuf
		System.out.println("初始容量" + buffer.capacity()); // 20
		buffer.writeByte(55);
		buffer.writeByte(44);
		buffer.writeByte(33);
		System.out.println("readerIndex位置:" + buffer.readerIndex()); // 0
		System.out.println("writerIndex位置:" + buffer.writerIndex()); // 3
		
		byte[] bytes = {73, 74, 61, 63};
		buffer.writeBytes(bytes);
		System.out.println("readerIndex位置:" + buffer.readerIndex()); // 0
		System.out.println("writerIndex位置:" + buffer.writerIndex()); // 7
		
		byte[] allBytes = new byte[buffer.readableBytes()];
		buffer.readBytes(allBytes);
		System.out.println("readerIndex位置:" + buffer.readerIndex()); // 7
		System.out.println("writerIndex位置:" + buffer.writerIndex()); // 7
		
		buffer.resetReaderIndex();
		System.out.println("readerIndex位置:" + buffer.readerIndex()); // 0
		System.out.println("writerIndex位置:" + buffer.writerIndex()); // 7
		
		byte b0 = buffer.readByte();
		byte b1 = buffer.readByte();
		byte b2 = buffer.readByte();
		System.out.println("readerIndex位置:" + buffer.readerIndex()); // 3
		System.out.println("writerIndex位置:" + buffer.writerIndex()); // 7
		
		buffer= buffer.readBytes(4); // 读4个,写入一个新的buffer
		byte[] dst = new byte[4];
		buffer.readBytes(dst);
		System.out.println("readerIndex位置:" + buffer.readerIndex()); // 4
		System.out.println("writerIndex位置:" + buffer.writerIndex()); // 4
		
		buffer.resetReaderIndex();
		
		System.out.println("初始readerIndex位置:" + buffer.readerIndex()); // 0
		System.out.println("初始writerIndex位置:" + buffer.writerIndex()); // 4
		
		buffer.markReaderIndex();
		
		buffer.readInt();
		
		System.out.println("读int后readerIndex位置:" + buffer.readerIndex()); // 4
		System.out.println("读int后writerIndex位置:" + buffer.writerIndex()); // 4
		
		buffer.resetReaderIndex();
		
		System.out.println("重置后readerIndex位置:" + buffer.readerIndex()); // 0
		System.out.println("重置后writerIndex位置:" + buffer.writerIndex()); // 4
		
	
		buffer.clear();
		System.out.println("readerIndex位置:" + buffer.readerIndex()); // 0
		System.out.println("writerIndex位置:" + buffer.writerIndex()); // 0
	}

 

 

おすすめ

転載: blog.csdn.net/shuixiou1/article/details/115030413