`

Java中File,byte[],Object间的转换

 
阅读更多

转载自:http://blog.csdn.net/guo_rui22/article/details/1740385

 

 

一、有两点需要注意:

    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笔试题

    * 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....

    File工具类

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

    java保存文件到数据库

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

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

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

    java导出图片到word文档

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

    java数据库存储图片

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

    java文件操作

    byte[] buffer = new byte[(int) file.length()]; fis.read(buffer); String content = new String(buffer); fis.close(); ``` 2. **字符流**: - `FileReader`和`FileWriter`用于读写文本文件,通常以UTF-8...

    Java 动态加载jar文件示例

    在Java编程语言中,动态加载jar文件是一种关键的特性,它允许程序在运行时加载新的类库或组件,而不是在编译时静态地链接。这种技术对于实现插件式开发或者模块化系统至关重要,因为它提供了灵活性和可扩展性。下面...

    java IO文档

    Java IO(输入/输出)系统是Java平台中的一个重要组成部分,主要用于处理文件读写、网络通信等数据传输操作。Java IO库提供了一系列类和接口来实现这些功能,使得开发人员能够方便地进行数据的输入和输出操作。 ###...

    50个Java常用面试题

    6. Java中的基本数据类型和String之间的转换: - 当基本数据类型和String类型进行连接操作时,基本数据类型会自动转换为String类型,然后进行字符串连接操作。 7. final关键字: - 使用final修饰的变量表示其值不...

    java如何上传图片到数据库

    ### Java 如何上传图片到数据库:深入探讨与实践 #### 一、背景介绍 在现代Web应用开发中,经常需要处理各种多媒体数据,如图片、音频和视频等。其中,图片是最常见的一种类型。通常情况下,我们会选择将图片存储在...

Global site tag (gtag.js) - Google Analytics