`

【转】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;

public class Byte_File_Object ...{

    
/** *//**
     * 文件转化为字节数组
     * @Author Sean.guo
     * @EditTime 2007-8-13 上午11:45:28
     
*/

    
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];
            for (int n;(n = stream.read(b)) != -1;) {
out.write(b, 0, n);
}
            stream.close();
            out.close();
            
return out.toByteArray();
        }
 catch (IOException e) ...{
        }

        
return null;
    }


    
/** *//**
     * 把字节数组保存为一个文件
     * @Author Sean.guo
     * @EditTime 2007-8-13 上午11:45:56
     
*/

    
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;
    }


    
/** *//**
     * 从字节数组获取对象
     * @Author Sean.guo
     * @EditTime 2007-8-13 上午11:46:34
     
*/

    
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();
    }


    
/** *//**
     * 从对象获取一个字节数组
     * @Author Sean.guo
     * @EditTime 2007-8-13 上午11:46:56
     
*/

    
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);
        
return bo.toByteArray();
    }


}
分享到:
评论

相关推荐

    java对象转成byte数组的3种方法

    在 Java 中,将对象转换为 byte 数组是一种常见的操作,特别是在使用 Netty 进行通信协议传输的场景中。那么,如何方便地将一个 Java 对象构造成一个 byte 数组呢? 方法 1:使用 ByteBuf 在 Netty 中,我们可以...

    Java 类型相互转换byte[]类型,Blob类型详细介绍

    在Java编程中,数据存储和传输常常涉及到不同类型的数据转换,特别是在数据库操作中,与二进制大数据相关的类型如`byte[]`(字节数组)和`Blob`(Binary Large Object)之间的转换尤为常见。本篇文章将详细讲解如何...

    mysql blob to 向 file转换

    本文将详细介绍 MySQL 中的 BLOB 到文件的转换方法,并提供一个 Java 实现示例。 BLOB 数据类型 在 MySQL 中,BLOB 是一种二进制大对象类型,用于存储大型二进制数据,如图像、音频、视频等。BLOB 数据类型可以...

    image与字节数组byte的互转

    本文将详细探讨如何在Java、Python和C#这三种常用编程语言中实现图像(Image)与字节数组(byte[])之间的相互转换。 **Java中的转换** 1. **Image转byte[]** 在Java中,我们可以使用`FileInputStream`读取图片...

    java,Blob字段操作,将图片或者文件保存到数据库中.zip

    在Java编程中,Blob(Binary Large Object)是用于存储大量二进制数据的数据类型,常被用在数据库中保存图片、文件等非文本信息。本教程将深入探讨如何使用Java进行Blob字段的操作,以实现将图片或文件保存到数据库...

    java中sqllite数据库blob数据类型的存取.docx

    在Java中操作SQLite数据库时,BLOB(Binary Large Object)类型的数据处理是较为常见的需求之一,尤其是在需要存储图片、文档等二进制文件的情况下。本文档旨在解决如何在Java环境下通过SQLite有效地存储和提取BLOB...

    java导出图片到word文档

    在Java编程中,将图片导出到Word文档是一项常见的任务,尤其在自动化报告生成或数据可视化等场景下。本文将详细介绍如何使用Java实现这一功能,包括必要的库、步骤以及可能出现的问题。 首先,我们需要一个能够处理...

    Java选择题武汉大学JAVA基础.pdf

    Java中的数据类型转换包括隐式转换和显式(强制)转换。 40. Java中的单例模式 单例模式是一种设计模式,保证一个类只有一个实例,并提供一个全局访问点。 41. Java中的异常处理 异常处理是Java语言中的重要组成...

    东华合创java笔试题

    * Java中的对象可以被强制类型转换为其他类型,例如Object o = new Foo(); Foo foo = (Foo)o; * Java中的构造方法可以被重载,例如public Foo(int x)和public Foo(String s)。 四、Java多线程知识 * Java中的线程...

    文件加密解密算法(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....

    java保存文件到数据库

    这个过程涉及到将文件转换为二进制数据,然后将这些数据存储到数据库的特定字段中,通常是一个BLOB(Binary Large Object)类型。在给定的场景中,我们看到一个名为"SavePic.java"的文件,这可能是实现这一功能的...

    xml 转 jsonObject

    XML(Extensible Markup Language)和JSON(JavaScript ...这个过程涉及到XML和JSON的互转、文件I/O以及压缩文件的处理,这些都是Java开发中常见的技能。理解并熟练掌握这些将有助于你处理各种数据交换和文件处理任务。

    File工具类

    在Java编程语言中,`File`工具类是用于操作文件和目录的核心类,它位于`java.io`包中。这个类提供了许多方法来创建、读取、写入、删除文件以及管理目录结构。理解并熟练使用`File`类是每个Java开发者必备的技能。 ...

    java数据库存储图片

    在Java编程中,存储图片至数据库通常涉及到将图像文件转换为二进制数据,然后将这些数据存储在数据库的BLOB(Binary Large Object)类型的字段中。以下是对这个主题的详细解释: 首先,我们需要理解BLOB类型。在SQL...

    Java中的流与文件

    ### Java中的流与文件 #### 1. Java流概述 在Java编程中,流(Stream)是一种用于处理数据的抽象概念,它可以将数据看作是一系列连续的字节或字符流。流的概念非常重要,因为它提供了从文件、网络和其他来源读取数据...

    Java io输入输出流及字符集

    在Java中,字符流处理涉及字符集转换: 1. InputStreamReader和OutputStreamWriter 这两个类在字节流和字符流之间起桥梁作用,通过指定的字符集进行转换。例如,如果你有一个字节流,但希望以UTF-8格式读取,你可以...

    radix:各种进制之间的转换,基本数据类型转换成字节,对象与字节间的转换,对象转换成字节存入文件,从字节文件中读取文件并转换成对象

    在Java编程语言中,数据类型转换和进制转换是日常开发中的常见操作。本文将深入探讨标题和描述中提到的几个关键知识点:各种进制之间的转换、基本数据类型与字节的转换、对象与字节之间的转换、以及如何将字节序列...

    专题讲座资料(2021-2022年)大工秋Java程序设计在线作业.docx

    - 类型转换中,向上转型(如父类引用指向子类对象)不需要强制类型转换,但向下转型需要。 5. **JDK工具**: - `javac.exe`是Java语言的编译器,负责将源代码转换为字节码。 6. **源文件与编译后文件**: - ...

    java文件操作

    在Java编程语言中,文件操作是一项基础且至关重要的任务,涉及到读取、写入、创建、删除等操作。本文将详细解析Java中的文件操作,并基于给出的资源进行深入讲解。 首先,`java.io`包提供了丰富的类来处理输入/输出...

Global site tag (gtag.js) - Google Analytics