Convert增加readByteArray和writeByteArray方法
This commit is contained in:
@@ -107,6 +107,13 @@ public abstract class Reader {
|
|||||||
*/
|
*/
|
||||||
public abstract byte readByte();
|
public abstract byte readByte();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 读取byte[]
|
||||||
|
*
|
||||||
|
* @return byte[]
|
||||||
|
*/
|
||||||
|
public abstract byte[] readByteArray();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 读取一个char值
|
* 读取一个char值
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -182,6 +182,13 @@ public abstract class Writer {
|
|||||||
*/
|
*/
|
||||||
public abstract void writeByte(byte value);
|
public abstract void writeByte(byte value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 写入byte[]
|
||||||
|
*
|
||||||
|
* @param values byte[]
|
||||||
|
*/
|
||||||
|
public abstract void writeByteArray(byte[] values);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 写入一个char值
|
* 写入一个char值
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -248,6 +248,35 @@ public class BsonReader extends Reader {
|
|||||||
return content[++this.position];
|
return content[++this.position];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final byte[] readByteArray() {
|
||||||
|
int len = readArrayB();
|
||||||
|
if (len == Reader.SIGN_NULL) return null;
|
||||||
|
if (len == Reader.SIGN_NOLENGTH) {
|
||||||
|
int size = 0;
|
||||||
|
byte[] data = new byte[8];
|
||||||
|
while (hasNext()) {
|
||||||
|
if (size >= data.length) {
|
||||||
|
byte[] newdata = new byte[data.length + 4];
|
||||||
|
System.arraycopy(data, 0, newdata, 0, size);
|
||||||
|
data = newdata;
|
||||||
|
}
|
||||||
|
data[size++] = readByte();
|
||||||
|
}
|
||||||
|
readArrayE();
|
||||||
|
byte[] newdata = new byte[size];
|
||||||
|
System.arraycopy(data, 0, newdata, 0, size);
|
||||||
|
return newdata;
|
||||||
|
} else {
|
||||||
|
byte[] values = new byte[len];
|
||||||
|
for (int i = 0; i < values.length; i++) {
|
||||||
|
values[i] = readByte();
|
||||||
|
}
|
||||||
|
readArrayE();
|
||||||
|
return values;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public char readChar() {
|
public char readChar() {
|
||||||
return (char) ((0xff00 & (content[++this.position] << 8)) | (0xff & content[++this.position]));
|
return (char) ((0xff00 & (content[++this.position] << 8)) | (0xff & content[++this.position]));
|
||||||
|
|||||||
@@ -125,6 +125,22 @@ public class BsonWriter extends Writer {
|
|||||||
writeTo(value);
|
writeTo(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final void writeByteArray(byte[] values) {
|
||||||
|
if (values == null) {
|
||||||
|
writeNull();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
writeArrayB(values.length);
|
||||||
|
boolean flag = false;
|
||||||
|
for (byte v : values) {
|
||||||
|
if (flag) writeArrayMark();
|
||||||
|
writeByte(v);
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
writeArrayE();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void writeChar(final char value) {
|
public final void writeChar(final char value) {
|
||||||
writeTo((byte) ((value & 0xFF00) >> 8), (byte) (value & 0xFF));
|
writeTo((byte) ((value & 0xFF00) >> 8), (byte) (value & 0xFF));
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import org.redkale.convert.Writer;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* byte[] 的SimpledCoder实现
|
* byte[] 的SimpledCoder实现
|
||||||
*
|
*
|
||||||
* <p>
|
* <p>
|
||||||
* 详情见: https://redkale.org
|
* 详情见: https://redkale.org
|
||||||
*
|
*
|
||||||
@@ -25,47 +25,12 @@ public final class ByteArraySimpledCoder<R extends Reader, W extends Writer> ext
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void convertTo(W out, byte[] values) {
|
public void convertTo(W out, byte[] values) {
|
||||||
if (values == null) {
|
out.writeByteArray(values);
|
||||||
out.writeNull();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
out.writeArrayB(values.length);
|
|
||||||
boolean flag = false;
|
|
||||||
for (byte v : values) {
|
|
||||||
if (flag) out.writeArrayMark();
|
|
||||||
out.writeByte(v);
|
|
||||||
flag = true;
|
|
||||||
}
|
|
||||||
out.writeArrayE();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public byte[] convertFrom(R in) {
|
public byte[] convertFrom(R in) {
|
||||||
int len = in.readArrayB();
|
return in.readByteArray();
|
||||||
if (len == Reader.SIGN_NULL) return null;
|
|
||||||
if (len == Reader.SIGN_NOLENGTH) {
|
|
||||||
int size = 0;
|
|
||||||
byte[] data = new byte[8];
|
|
||||||
while (in.hasNext()) {
|
|
||||||
if (size >= data.length) {
|
|
||||||
byte[] newdata = new byte[data.length + 4];
|
|
||||||
System.arraycopy(data, 0, newdata, 0, size);
|
|
||||||
data = newdata;
|
|
||||||
}
|
|
||||||
data[size++] = in.readByte();
|
|
||||||
}
|
|
||||||
in.readArrayE();
|
|
||||||
byte[] newdata = new byte[size];
|
|
||||||
System.arraycopy(data, 0, newdata, 0, size);
|
|
||||||
return newdata;
|
|
||||||
} else {
|
|
||||||
byte[] values = new byte[len];
|
|
||||||
for (int i = 0; i < values.length; i++) {
|
|
||||||
values[i] = in.readByte();
|
|
||||||
}
|
|
||||||
in.readArrayE();
|
|
||||||
return values;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -453,6 +453,35 @@ public class JsonReader extends Reader {
|
|||||||
return (byte) readInt();
|
return (byte) readInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final byte[] readByteArray() {
|
||||||
|
int len = readArrayB();
|
||||||
|
if (len == Reader.SIGN_NULL) return null;
|
||||||
|
if (len == Reader.SIGN_NOLENGTH) {
|
||||||
|
int size = 0;
|
||||||
|
byte[] data = new byte[8];
|
||||||
|
while (hasNext()) {
|
||||||
|
if (size >= data.length) {
|
||||||
|
byte[] newdata = new byte[data.length + 4];
|
||||||
|
System.arraycopy(data, 0, newdata, 0, size);
|
||||||
|
data = newdata;
|
||||||
|
}
|
||||||
|
data[size++] = readByte();
|
||||||
|
}
|
||||||
|
readArrayE();
|
||||||
|
byte[] newdata = new byte[size];
|
||||||
|
System.arraycopy(data, 0, newdata, 0, size);
|
||||||
|
return newdata;
|
||||||
|
} else {
|
||||||
|
byte[] values = new byte[len];
|
||||||
|
for (int i = 0; i < values.length; i++) {
|
||||||
|
values[i] = readByte();
|
||||||
|
}
|
||||||
|
readArrayE();
|
||||||
|
return values;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final char readChar() {
|
public final char readChar() {
|
||||||
return (char) readInt();
|
return (char) readInt();
|
||||||
|
|||||||
@@ -188,6 +188,22 @@ public class JsonWriter extends Writer {
|
|||||||
writeInt(value);
|
writeInt(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public final void writeByteArray(byte[] values) {
|
||||||
|
if (values == null) {
|
||||||
|
writeNull();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
writeArrayB(values.length);
|
||||||
|
boolean flag = false;
|
||||||
|
for (byte v : values) {
|
||||||
|
if (flag) writeArrayMark();
|
||||||
|
writeByte(v);
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
writeArrayE();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void writeChar(char value) {
|
public final void writeChar(char value) {
|
||||||
writeInt(value);
|
writeInt(value);
|
||||||
|
|||||||
Reference in New Issue
Block a user