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 数组是一种常见的操作,特别是在使用 Netty 进行通信协议传输的场景中。那么,如何方便地将一个 Java 对象构造成一个 byte 数组呢? 方法 1...
Java IO流是Java平台中处理输入输出操作的核心机制,它为数据传输提供了高效且灵活的方式。在Java中,一切输入输出都围绕着“流”进行,流是数据传输的抽象概念,代表数据的序列,可以是文件、网络、内存等不同来源...
在Java编程中,数据存储和传输常常涉及到不同类型的数据转换,特别是在数据库操作中,与二进制大数据相关的类型如`byte[]`(字节数组)和`Blob`(Binary Large Object)之间的转换尤为常见。本篇文章将详细讲解如何...
**4.1 java.io.File文件类** - **构造方法**: - `File(String pathname)` - `File(File parent, String child)` - **常用方法**: - `createNewFile()`:创建新文件。 - `mkdir()`:创建目录。 - `delete()`...
本文将详细探讨如何在Java、Python和C#这三种常用编程语言中实现图像(Image)与字节数组(byte[])之间的相互转换。 **Java中的转换** 1. **Image转byte[]** 在Java中,我们可以使用`FileInputStream`读取图片...
在Java中操作SQLite数据库时,BLOB(Binary Large Object)类型的数据处理是较为常见的需求之一,尤其是在需要存储图片、文档等二进制文件的情况下。本文档旨在解决如何在Java环境下通过SQLite有效地存储和提取BLOB...
在Java中,IO流分为四类:字节流(Byte Streams)、字符流(Character Streams)、对象流(Object Streams)和缓冲流(Buffered Streams)。字节流处理的是8位的数据单元,而字符流处理的是16位的Unicode字符。对于...
在Java编程中,Blob(Binary Large Object)是用于存储大量二进制数据的数据类型,常被用在数据库中保存图片、文件等非文本信息。本教程将深入探讨如何使用Java进行Blob字段的操作,以实现将图片或文件保存到数据库...
本文将详细介绍 MySQL 中的 BLOB 到文件的转换方法,并提供一个 Java 实现示例。 BLOB 数据类型 在 MySQL 中,BLOB 是一种二进制大对象类型,用于存储大型二进制数据,如图像、音频、视频等。BLOB 数据类型可以...
6. **对象流(Object Stream)**:允许序列化和反序列化Java对象,如ObjectInputStream和ObjectOutputStream,它们使得对象可以被写入输出流并从输入流中读取。 7. **文件操作**:File类提供了文件和目录的基本操作...
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 如何上传图片到数据库:深入探讨与实践 #### 一、背景介绍 在现代Web应用开发中,经常需要处理各种多媒体数据,如图片、音频和视频等。其中,图片是最常见的一种类型。通常情况下,我们会选择将图片存储在...
在Java编程中,将图片导出到Word文档是一项常见的任务,尤其在自动化报告生成或数据可视化等场景下。本文将详细介绍如何使用Java实现这一功能,包括必要的库、步骤以及可能出现的问题。 首先,我们需要一个能够处理...
在Java编程语言中,`File`工具类是用于操作文件和目录的核心类,它位于`java.io`包中。这个类提供了许多方法来创建、读取、写入、删除文件以及管理目录结构。理解并熟练使用`File`类是每个Java开发者必备的技能。 ...
这个过程涉及到将文件转换为二进制数据,然后将这些数据存储到数据库的特定字段中,通常是一个BLOB(Binary Large Object)类型。在给定的场景中,我们看到一个名为"SavePic.java"的文件,这可能是实现这一功能的...
在Java编程中,存储图片至数据库通常涉及到将图像文件转换为二进制数据,然后将这些数据存储在数据库的BLOB(Binary Large Object)类型的字段中。以下是对这个主题的详细解释: 首先,我们需要理解BLOB类型。在SQL...
- Java的字符串和数组是对象,`String`对象不能直接赋值给`char`类型,`Object a=new String("abc");`是正确的。 9. **面向对象特性**: - 面向对象编程的四大特性——抽象、继承、封装和多态,在Java中得到体现...
byte[] buffer = new byte[(int) file.length()]; fis.read(buffer); String content = new String(buffer); fis.close(); ``` 2. **字符流**: - `FileReader`和`FileWriter`用于读写文本文件,通常以UTF-8...