`

Java_File,byte[],Object间的转换

    博客分类:
  • Java
 
阅读更多

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 数组的 3 种方法 在 Java 中,将对象转换为 byte 数组是一种常见的操作,特别是在使用 Netty 进行通信协议传输的场景中。那么,如何方便地将一个 Java 对象构造成一个 byte 数组呢? 方法 1...

    java_io流讲解.docx.zip

    Java IO流是Java平台中处理输入输出操作的核心机制,它为数据传输提供了高效且灵活的方式。在Java中,一切输入输出都围绕着“流”进行,流是数据传输的抽象概念,代表数据的序列,可以是文件、网络、内存等不同来源...

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

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

    个人笔记--Java_API

    **4.1 java.io.File文件类** - **构造方法**: - `File(String pathname)` - `File(File parent, String child)` - **常用方法**: - `createNewFile()`:创建新文件。 - `mkdir()`:创建目录。 - `delete()`...

    image与字节数组byte的互转

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

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

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

    09_IOAndProperties_javaIO流_get9va_

    在Java中,IO流分为四类:字节流(Byte Streams)、字符流(Character Streams)、对象流(Object Streams)和缓冲流(Buffered Streams)。字节流处理的是8位的数据单元,而字符流处理的是16位的Unicode字符。对于...

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

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

    mysql blob to 向 file转换

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

    java sdk01.rar_io_java 类库

    6. **对象流(Object Stream)**:允许序列化和反序列化Java对象,如ObjectInputStream和ObjectOutputStream,它们使得对象可以被写入输出流并从输入流中读取。 7. **文件操作**:File类提供了文件和目录的基本操作...

    文件加密解密算法(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如何上传图片到数据库

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

    java导出图片到word文档

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

    File工具类

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

    java保存文件到数据库

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

    java数据库存储图片

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

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

    - Java的字符串和数组是对象,`String`对象不能直接赋值给`char`类型,`Object a=new String("abc");`是正确的。 9. **面向对象特性**: - 面向对象编程的四大特性——抽象、继承、封装和多态,在Java中得到体现...

    java文件操作

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

Global site tag (gtag.js) - Google Analytics