via: http://wenku.baidu.com/link?url=CXewQfqwR-IfVLqIOOWOgn4HqZJoLWypMs7Qp36jWIerUMGqD4yQu1PqctW_f9aY9pIxO0TlJlKZDydlFyTXZlmoyW0w6JOPTnray6SJJw7
一、有两点需要注意:
1、Object 对象必须是可序列化对象 。
2、可序列化的 Object 对象都可以转换为一个磁盘文件;反过来则不一定成立,只有序列化文件才可以转换为 Object 对象。
二、相关的转换方法:
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class Main
{
public static byte[] getBytesFromFile(File f)
{
if (f == null) { return null; }
try
{
FileInputStream stream = new FileInputStream(f);
ByteArrayOutputStream out = new ByteArrayOutputStream(1000);
byte[] b = new byte[1000];
int n;
while ((n = stream.read(b)) != -1) { out.write(b, 0, n); }
stream.close();
out.close();
return out.toByteArray();
}
catch (IOException e) { e.printStackTrace(); }
return null;
}
public static File getFileFromBytes(byte[] b, String outputFile)
{
BufferedOutputStream stream = null;
File file = null;
try
{
file = new File(outputFile);
FileOutputStream fstream = new FileOutputStream(file);
stream = new BufferedOutputStream(fstream);
stream.write(b);
}
catch (Exception e) { e.printStackTrace(); }
finally
{
if (stream != null)
{
try { stream.close(); }
catch (IOException e1) { e1.printStackTrace(); }
}
}
return file;
}
public static Object getObjectFromBytes(byte[] objBytes) throws Exception
{
if (objBytes == null || objBytes.length == 0) { return null; }
ByteArrayInputStream bi = new ByteArrayInputStream(objBytes);
ObjectInputStream oi = new ObjectInputStream(bi);
return oi.readObject();
}
public static byte[] getBytesFromObject(Serializable obj) throws Exception
{
if (obj == null) { return null; }
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ObjectOutputStream oo = new ObjectOutputStream(bo);
oo.writeObject(obj);
}
本文详细介绍了Java序列化与反序列化的基本概念、相关方法以及注意事项,包括如何将Object对象转换为字节数组并在磁盘中持久化,以及如何从字节数组还原为Object对象。
1760

被折叠的 条评论
为什么被折叠?



