vert.x中的buffer简介

本文之所以要对vert.x中的buffer做简介,主要是因为它对于vert.x来说很重要,例如当verticle要对http请求来的数据(data block)进行处理,或者将数据response给前端,都需要buffer来处理。

创建Buffer

可以通过Buffer接口的static方法buffer()创建一个Buffer对象

Buffer buffer = Buffer.buffer();

也可以在创建时传入byte[]数据参数

byte[] data = new byte[]{a,b,c};
Buffer buffer = Buffer.buffer(data);

还有可以通过传入字符串构造一个Buffer对象

Buffer buffer = Buffer.buffer("initial String");

还可以在传入字符串的时候指定编码

Buffer buffer = Buffer.buffer("initial data", "UTF-8");

上面的写法等同于

Buffer buffer = Buffer.buffer("initial data".getBytes("UTF-8"));

Buffer有length()方法可以获取它的长度。

写数据到Buffer

Buffer buffer = Buffer.buffer();

System.out.println("buffer.length() = " + buffer.length());

buffer.setByte  ( 0, (byte)  127);
buffer.setShort ( 2, (short) 127);
buffer.setInt   ( 4,         127);
buffer.setLong  ( 8,         127);
buffer.setFloat (16,      127.0F);
buffer.setDouble(20,      127.0D);

System.out.println("buffer.length() = " + buffer.length());

往buffer中写入数据可以通过set…方式,buffer会自适应添加的多少变化长度。
也可以通过append()方法往buffer中添加数据

Buffer buffer = Buffer.buffer();

System.out.println("buffer.length() = " + buffer.length());

buffer.appendByte  ((byte)  127);
buffer.appendShort ((short) 127);
buffer.appendInt   (        127);
buffer.appendLong  (        127);
buffer.appendFloat (     127.0F);
buffer.appendDouble(     127.0D);

System.out.println("buffer.length() = " + buffer.length());

append()方法不需要索引(index)参数,它会添加数据到尾部,
上面两种方式添加完之后,打印的length并不相同,请读者自行体会。

从Buffer读数据

byte   aByte   = buffer.getByte  ( 0);
short  aShort  = buffer.getShort ( 2);
int    anInt   = buffer.getInt   ( 4);
long   aLong   = buffer.getLong  ( 8);
float  aFloat  = buffer.getFloat (16);
double aDouble = buffer.getDouble(20);

可以看到Buffer提供了很方便的数据操作方法。

你可能感兴趣的:(Java异步编程)