字节数组、文件以及Object之间的转换

转载 2013年12月02日 18:05:01

Java中File,byte[],Object间的转换
 1、Object 对象必须是可序列化对象 。 
 2、可序列化的 Object 对象都可以保存为文件;其保存的文件也可以转换为Object对象。

  1. import java.io.BufferedOutputStream;   
  2. import java.io.ByteArrayInputStream;   
  3. import java.io.ByteArrayOutputStream;   
  4. import java.io.File;   
  5. import java.io.FileInputStream;   
  6. import java.io.FileOutputStream;   
  7. import java.io.IOException;   
  8. import java.io.ObjectInputStream;   
  9. import java.io.ObjectOutputStream;   
  10. import java.io.Serializable;   
  11.   
  12. public class Byte_File_Object {   
  13.   
  14.     /**  
  15.      * 文件转化为字节数组  
  16.      * @EditTime 2007-8-13 上午11:45:28  
  17.      */   
  18.     public static byte[] getBytesFromFile(File f) {   
  19.         if (f == null) {   
  20.             return null;   
  21.         }   
  22.         try {   
  23.             FileInputStream stream = new FileInputStream(f);   
  24.             ByteArrayOutputStream out = new ByteArrayOutputStream(1000);   
  25.             byte[] b = new byte[1000];   
  26.             int n;   
  27.             while ((n = stream.read(b)) != -1) {  
  28.                 out.write(b, 0, n);   
  29.                }  
  30.             stream.close();   
  31.             out.close();   
  32.             return out.toByteArray();   
  33.         } catch (IOException e) {   
  34.         }   
  35.         return null;   
  36.     }   
  37.   
  38.     /** 
  39.      * 把字节数组保存为一个文件  
  40.      * @EditTime 2007-8-13 上午11:45:56  
  41.      */   
  42.     public static File getFileFromBytes(byte[] b, String outputFile) {   
  43.         BufferedOutputStream stream = null;   
  44.         File file = null;   
  45.         try {   
  46.             file = new File(outputFile);   
  47.             FileOutputStream fstream = new FileOutputStream(file);   
  48.             stream = new BufferedOutputStream(fstream);   
  49.             stream.write(b);   
  50.         } catch (Exception e) {   
  51.             e.printStackTrace();   
  52.         } finally {   
  53.             if (stream != null) {   
  54.                 try {   
  55.                     stream.close();   
  56.                 } catch (IOException e1) {   
  57.                     e1.printStackTrace();   
  58.                 }   
  59.             }   
  60.         }   
  61.         return file;   
  62.     }   
  63.   
  64.     /**  
  65.      * 从字节数组获取对象  
  66.      * @EditTime 2007-8-13 上午11:46:34  
  67.      */   
  68.     public static Object getObjectFromBytes(byte[] objBytes) throws Exception {   
  69.         if (objBytes == null || objBytes.length == 0) {   
  70.             return null;   
  71.         }   
  72.         ByteArrayInputStream bi = new ByteArrayInputStream(objBytes);   
  73.         ObjectInputStream oi = new ObjectInputStream(bi);   
  74.         return oi.readObject();   
  75.     }   
  76.   
  77.     /** 
  78.      * 从对象获取一个字节数组  
  79.      * @EditTime 2007-8-13 上午11:46:56  
  80.      */   
  81.     public static byte[] getBytesFromObject(Serializable obj) throws Exception {   
  82.         if (obj == null) {   
  83.             return null;   
  84.         }   
  85.         ByteArrayOutputStream bo = new ByteArrayOutputStream();   
  86.         ObjectOutputStream oo = new ObjectOutputStream(bo);   
  87.         oo.writeObject(obj);   
  88.         return bo.toByteArray();   
  89.     }   
  90. }   

相关文章推荐

C#16进制与字符串、字节数组之间的转换

整理一些常用的进制与字符串、字节数组之间的转换的函数,以方便需要之时。

C# 16进制与字符串、字节数组之间的转换

1.c#中如何将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制 Console.WriteLine("十进制166的二进制表示: "+Convert.ToString(166, ...

C# 16进制与字符串、字节数组之间的转换

C# 16进制与字符串、字节数组之间的转换    在串口通讯过程中,经常要用到 16进制与字符串、字节数组之间的转换   字符串转16进制字节数组 /**////  ...

C# 16进制与字符串、字节数组之间的转换(转)

1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制 Console.WriteLine("十进制166的二进制表示: "+Convert.ToString(166...

C# 16进制与字符串、字节数组之间的转换

/// /// 字符串转16进制字节数组 /// /// /// private static byt...

Java中二进制、十进制、十六进制及ASCII码与String及字节数组与十六进制之间的转换

public class DigitalTrans { /** * 数字字符串转ASCII码字符串 * * @param String * ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)