com.ikasoa.rpc.utils.StreamUtil Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ikasoa-rpc Show documentation
Show all versions of ikasoa-rpc Show documentation
ikasoa-rpc is a high performance RPC(Remote Procedure Call) framework.
package com.ikasoa.rpc.utils;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import lombok.SneakyThrows;
/**
* 流处理工具
*
* @author Larry
* @version 0.1
*/
public class StreamUtil {
@SneakyThrows
public static byte[] inputStreamToBytes(InputStream is) {
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
int i;
while ((i = is.read()) != -1)
baos.write(i);
return baos.toByteArray();
}
}
public static InputStream bytesToInputStream(byte[] bytes) {
return new ByteArrayInputStream(bytes);
}
@SneakyThrows
public static byte[] objectToBytes(Object obj) {
byte[] bytes = null;
try (ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos)) {
oos.writeObject(obj);
oos.flush();
bytes = bos.toByteArray();
}
return bytes;
}
@SneakyThrows
public static Object bytesToObject(byte[] bytes) {
Object obj = null;
try (ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bis)) {
obj = ois.readObject();
}
return obj;
}
}