一、有两点需要注意:
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];
int n;
while ((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 数组是一种常见的操作,特别是在使用 Netty 进行通信协议传输的场景中。那么,如何方便地将一个 Java 对象构造成一个 byte 数组呢? 方法 1:使用 ByteBuf 在 Netty 中,我们可以...
在Java编程中,数据存储和传输常常涉及到不同类型的数据转换,特别是在数据库操作中,与二进制大数据相关的类型如`byte[]`(字节数组)和`Blob`(Binary Large Object)之间的转换尤为常见。本篇文章将详细讲解如何...
本文将详细介绍 MySQL 中的 BLOB 到文件的转换方法,并提供一个 Java 实现示例。 BLOB 数据类型 在 MySQL 中,BLOB 是一种二进制大对象类型,用于存储大型二进制数据,如图像、音频、视频等。BLOB 数据类型可以...
本文将详细探讨如何在Java、Python和C#这三种常用编程语言中实现图像(Image)与字节数组(byte[])之间的相互转换。 **Java中的转换** 1. **Image转byte[]** 在Java中,我们可以使用`FileInputStream`读取图片...
在Java编程中,Blob(Binary Large Object)是用于存储大量二进制数据的数据类型,常被用在数据库中保存图片、文件等非文本信息。本教程将深入探讨如何使用Java进行Blob字段的操作,以实现将图片或文件保存到数据库...
在Java中操作SQLite数据库时,BLOB(Binary Large Object)类型的数据处理是较为常见的需求之一,尤其是在需要存储图片、文档等二进制文件的情况下。本文档旨在解决如何在Java环境下通过SQLite有效地存储和提取BLOB...
* Java中的对象可以被强制类型转换为其他类型,例如Object o = new Foo(); Foo foo = (Foo)o; * Java中的构造方法可以被重载,例如public Foo(int x)和public Foo(String s)。 四、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编程语言中,`File`工具类是用于操作文件和目录的核心类,它位于`java.io`包中。这个类提供了许多方法来创建、读取、写入、删除文件以及管理目录结构。理解并熟练使用`File`类是每个Java开发者必备的技能。 ...
这个过程涉及到将文件转换为二进制数据,然后将这些数据存储到数据库的特定字段中,通常是一个BLOB(Binary Large Object)类型。在给定的场景中,我们看到一个名为"SavePic.java"的文件,这可能是实现这一功能的...
Java中的数据类型转换包括隐式转换和显式(强制)转换。 40. Java中的单例模式 单例模式是一种设计模式,保证一个类只有一个实例,并提供一个全局访问点。 41. Java中的异常处理 异常处理是Java语言中的重要组成...
在Java编程中,将图片导出到Word文档是一项常见的任务,尤其在自动化报告生成或数据可视化等场景下。本文将详细介绍如何使用Java实现这一功能,包括必要的库、步骤以及可能出现的问题。 首先,我们需要一个能够处理...
在Java编程中,存储图片至数据库通常涉及到将图像文件转换为二进制数据,然后将这些数据存储在数据库的BLOB(Binary Large Object)类型的字段中。以下是对这个主题的详细解释: 首先,我们需要理解BLOB类型。在SQL...
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 IO(输入/输出)系统是Java平台中的一个重要组成部分,主要用于处理文件读写、网络通信等数据传输操作。Java IO库提供了一系列类和接口来实现这些功能,使得开发人员能够方便地进行数据的输入和输出操作。 ###...
6. Java中的基本数据类型和String之间的转换: - 当基本数据类型和String类型进行连接操作时,基本数据类型会自动转换为String类型,然后进行字符串连接操作。 7. final关键字: - 使用final修饰的变量表示其值不...
### Java 如何上传图片到数据库:深入探讨与实践 #### 一、背景介绍 在现代Web应用开发中,经常需要处理各种多媒体数据,如图片、音频和视频等。其中,图片是最常见的一种类型。通常情况下,我们会选择将图片存储在...