`

Java_File,byte[],Object间的转换

    博客分类:
  • Java
 
阅读更多

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对象转成byte数组的3种方法

    主要为大家详细介绍了java对象转成byte数组的3种方法,具有一定的参考价值,感兴趣的朋友可以参考一下

    文件加密解密算法(Java源码)

    java,file,算法,加密解密,java源码 package com.crypto.encrypt; import java.security.SecureRandom; import java.io.*; import javax.crypto.spec.DESKeySpec; import javax.crypto.SecretKey; import javax....

    JDK_API_1_6

    DataOutput DataOutput 接口用于将数据从任意 Java 基本类型转换为一系列字节,并将这些字节写入二进制流。 Externalizable Externalizable 实例类的唯一特性是可以被写入序列化流中,该类负责保存和恢复实例内容。...

    java 面试题 总结

    JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...

    java面试宝典

    java面试试题 全面 准确 带答案 coreJava部分 8 1、面向对象的特征有哪些方面? 8 2、作用域public,private,protected,以及不写时的区别? 8 3、String 是最基本的数据类型吗? 8 4、float 型float f=3.4是否正确? 8 ...

    java面试题

    答:JDO是java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。 CORBA? 答:CORBA标准是公共对象请求代理结构,用途为:用不同的程序设计语言书写,在不同的...

    java经典面试2010集锦100题(不看你后悔)

    B) 在Java中布尔类型不能和数字之间不能来回转换,即false和true不对应任何零或非零的值。 C) 双精度类型double比单精度类型float具有更高的精度和更大的表示范围,但float类型具有速度快、占用内存小的优点。 D) 在...

    Oracle9i的init.ora参数中文说明

    (ADDRESS=(PROTOCOL=decnet)(OBJECT=outa)(NODE=zeus)) 此参数在 8.1.3 版中已废弃。 值范围: TRUE | FALSE 默认值: FALSE mts_servers: 说明 : 指定在启动例程后, 要为共享服务器环境创建的服务器进程的数量。 值...

    超级有影响力霸气的Java面试题大全文档

    超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。...

    net学习笔记及其他代码应用

    引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。 [Page] 39.启动一个线程是用run()还是start()? 答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机...

    ssh(structs,spring,hibernate)框架中的上传下载

    7. <id name="fileId" type="java.lang.String" column="FILE_ID"> 8. 9. 10. 11. type="org.springframework.orm.hibernate3.support.BlobByteArrayType" 12. column="FILE_CONTENT" lazy="true"/> 13. …//...

    IO输入输出留

    java.io.File ============================================================================================ *表示磁盘文件或目录的路径 *可以表示一个不存在的路径 创建实例 -------------------------------...

    千方百计笔试题大全

    coreJava部分 8 1、面向对象的特征有哪些方面? 8 2、作用域public,private,protected,以及不写时的区别? 8 3、String 是最基本的数据类型吗? 8 4、float 型float f=3.4是否正确? 8 5、语句float f=1.3;编译能否...

Global site tag (gtag.js) - Google Analytics