【转】Java中File,byte[],Object间的转换
一、有两点需要注意:
????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;![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518797.gif)
![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518798.gif)
public?class?Byte_File_Object?...{![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518800.gif)
![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518801.gif)
????/**?*//**
?????*?文件转化为字节数组
?????*?@Author?Sean.guo
?????*?@EditTime?2007-8-13?上午11:45:28
?????*/![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518801.gif)
????public?static?byte[]?getBytesFromFile(File?f)?...{![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518801.gif)
????????if?(f?==?null)?...{
????????????return?null;
????????}![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518801.gif)
????????try?...{
????????????FileInputStream?stream?=?new?FileInputStream(f);
????????????ByteArrayOutputStream?out?=?new?ByteArrayOutputStream(1000);
????????????byte[]?b?=?new?byte[1000];
????????????for (int n;(n = stream.read(b)) != -1;) {out.write(b, 0, n);}
????????????stream.close();
????????????out.close();
????????????return?out.toByteArray();![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518801.gif)
????????}?catch?(IOException?e)?...{
????????}
????????return?null;
????}![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518800.gif)
![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518801.gif)
????/**?*//**
?????*?把字节数组保存为一个文件
?????*?@Author?Sean.guo
?????*?@EditTime?2007-8-13?上午11:45:56
?????*/![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518801.gif)
????public?static?File?getFileFromBytes(byte[]?b,?String?outputFile)?...{
????????BufferedOutputStream?stream?=?null;
????????File?file?=?null;![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518801.gif)
????????try?...{
????????????file?=?new?File(outputFile);
????????????FileOutputStream?fstream?=?new?FileOutputStream(file);
????????????stream?=?new?BufferedOutputStream(fstream);
????????????stream.write(b);![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518801.gif)
????????}?catch?(Exception?e)?...{
????????????e.printStackTrace();![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518801.gif)
????????}?finally?...{![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518801.gif)
????????????if?(stream?!=?null)?...{![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518801.gif)
????????????????try?...{
????????????????????stream.close();![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518801.gif)
????????????????}?catch?(IOException?e1)?...{
????????????????????e1.printStackTrace();
????????????????}
????????????}
????????}
????????return?file;
????}![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518800.gif)
![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518801.gif)
????/**?*//**
?????*?从字节数组获取对象
?????*?@Author?Sean.guo
?????*?@EditTime?2007-8-13?上午11:46:34
?????*/![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518801.gif)
????public?static?Object?getObjectFromBytes(byte[]?objBytes)?throws?Exception?...{![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518801.gif)
????????if?(objBytes?==?null?||?objBytes.length?==?0)?...{
????????????return?null;
????????}
????????ByteArrayInputStream?bi?=?new?ByteArrayInputStream(objBytes);
????????ObjectInputStream?oi?=?new?ObjectInputStream(bi);
????????return?oi.readObject();
????}![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518800.gif)
![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518801.gif)
????/**?*//**
?????*?从对象获取一个字节数组
?????*?@Author?Sean.guo
?????*?@EditTime?2007-8-13?上午11:46:56
?????*/![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518801.gif)
????public?static?byte[]?getBytesFromObject(Serializable?obj)?throws?Exception?...{![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518801.gif)
????????if?(obj?==?null)?...{
????????????return?null;
????????}
????????ByteArrayOutputStream?bo?=?new?ByteArrayOutputStream();
????????ObjectOutputStream?oo?=?new?ObjectOutputStream(bo);
????????oo.writeObject(obj);
????????return?bo.toByteArray();
????}![【转】Java中File,byte[],Object间的变换](http://img.reader8.net/uploadfile/jiaocheng/20140140/2720/2014012719202518800.gif)
}