package ioStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Date;
public class ByteArrayStream {
/**
* 将一个对象转化为字节数组
* @param a
* @return
* @throws Exception
*/
public static byte[] toBytes(Object a) throws Exception
{
ByteArrayOutputStream baos=new ByteArrayOutputStream();
ObjectOutputStream out=new ObjectOutputStream(baos);
out.writeObject(a);
out.close();
return baos.toByteArray();
}
/**
* 将字节数组转化为对象
* @param a
* @return
* @throws Exception
*/
public static Object toObject(byte[] a) throws Exception
{
ByteArrayInputStream baoi=new ByteArrayInputStream(a);
ObjectInputStream input =new ObjectInputStream(baoi);
Student stu=(Student) input.readObject();
input.close();
return stu;
}
/**
* 对象的深层的复制
* @param a
* @return
* @throws Exception
*/
public static Object copyObject(Object a) throws Exception
{
byte[] b=toBytes(a);
Object c=toObject(b);
return c;
}
public static void main(String[] args) throws Exception {
Student s=new Student("狄仁杰",new Date(),"大二",178);
byte[] b=toBytes(s);
System.out.println(b.length);
Student stu=(Student) toObject(b);
System.out.println(stu);
Student s1=(Student) copyObject(s);
Student s2=new Student("狄仁杰",new Date(),"大二",178);
Student s3=s;
System.out.println("s的hashcode:"+s.hashCode()+" s1的hashcode:"+s1.hashCode()+"s2的hashcode:"+s2.hashCode()+"s3的hashcode:"+s3.hashCode());
}
}