97 lines
2.2 KiB
Java
97 lines
2.2 KiB
Java
package com.pictc.utils;
|
||
|
||
import java.io.ByteArrayInputStream;
|
||
import java.io.ByteArrayOutputStream;
|
||
import java.io.Closeable;
|
||
import java.io.IOException;
|
||
import java.io.InputStream;
|
||
import java.io.ObjectInputStream;
|
||
import java.io.ObjectOutputStream;
|
||
import java.io.OutputStream;
|
||
import java.io.Serializable;
|
||
|
||
/**
|
||
* @Description TODO(这里用一句话描述这个类的作用)
|
||
* @author zhangfucai
|
||
* @Date 2023年4月25日 上午12:49:14
|
||
* @version 1.0.0
|
||
*/
|
||
public class ObjectUtils {
|
||
|
||
private ObjectUtils() {
|
||
super();
|
||
}
|
||
|
||
public static byte[] toBytes(Object obj){
|
||
if(obj!=null) {
|
||
if(!(obj instanceof Serializable)) {
|
||
throw new RuntimeException(obj+"没有实现 Serializable!");
|
||
}
|
||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||
ObjectOutputStream oo=null;
|
||
try {
|
||
oo = new ObjectOutputStream(out);
|
||
oo.writeObject(obj);
|
||
oo.flush();
|
||
return out.toByteArray();
|
||
} catch (Exception e) {
|
||
throw new RuntimeException("对象序列化失败!",e);
|
||
}finally {
|
||
closeQuietly(oo,out);
|
||
}
|
||
}
|
||
return null;
|
||
}
|
||
|
||
public static void write(OutputStream out,Object obj) {
|
||
if(obj!=null) {
|
||
if(!(obj instanceof Serializable)) {
|
||
throw new RuntimeException(obj+"没有实现 Serializable!");
|
||
}
|
||
ObjectOutputStream oo=null;
|
||
try {
|
||
oo = new ObjectOutputStream(out);
|
||
oo.writeObject(obj);
|
||
oo.flush();
|
||
} catch (Exception e) {
|
||
throw new RuntimeException("对象序列化失败!",e);
|
||
}finally {
|
||
closeQuietly(oo,out);
|
||
}
|
||
}
|
||
}
|
||
|
||
@SuppressWarnings("unchecked")
|
||
public static <T>T reader(InputStream in){
|
||
ObjectInputStream ois = null;
|
||
try {
|
||
ois = new ObjectInputStream(in);
|
||
return (T) ois.readObject();
|
||
} catch (Exception e) {
|
||
throw new RuntimeException("对象反序列化失败!",e);
|
||
}finally {
|
||
closeQuietly(ois,in);
|
||
}
|
||
}
|
||
|
||
public static <T>T reader(byte[] bytes){
|
||
return reader(new ByteArrayInputStream(bytes));
|
||
}
|
||
|
||
public static void closeQuietly(Closeable... closeables) {
|
||
if (closeables == null)
|
||
return;
|
||
|
||
for (Closeable closeable : closeables) {
|
||
if (closeable == null)
|
||
return;
|
||
|
||
try {
|
||
closeable.close();
|
||
} catch (IOException ignored) {
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|