- 浏览: 916812 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (263)
- J2EE (9)
- Spring (11)
- Hibernate (11)
- Struts (5)
- opensource (19)
- Hadoop (28)
- 架构设计 (8)
- 企业应用 (10)
- SNMP (8)
- SSO (4)
- webservice (11)
- RPC (2)
- 编程语言 (0)
- Java (30)
- Javascript (5)
- NoSQL (11)
- 数据库 (0)
- oracle (8)
- MySQL (3)
- web (1)
- Android (2)
- Linux (15)
- 软件工具 (15)
- 项目构建 (11)
- 测试工具 (2)
- Exception (19)
- 杂谈 (4)
- Groovy (5)
- Nodejs (1)
- MacOSX (4)
最新评论
-
fighhin:
decode(BinaryBitmap,java.util.M ...
条形码/二维码之开源利器ZXing图文介绍 -
u013489005:
追问:楼主,请问有中文文档么?我的邮箱是frankgray@s ...
Java表达式计算引擎:Expr4J -
u013489005:
感谢博主 需要引入的包是import java.io.*;im ...
Java表达式计算引擎:Expr4J -
calosteward:
感谢楼主分享。。 Zxing 我听说过的。__________ ...
条形码/二维码之开源利器ZXing图文介绍 -
u013810758:
judasqiqi 写道感谢楼主!想请问楼主一下这个生成的图片 ...
Java实现二维码QRCode的编码和解码
Java对象序列化ObjectOutputStream和ObjectInputStream示例
- 博客分类:
- Java
blog迁移至 :http://www.micmiu.com
Java中ObjectInputStream 与 ObjectOutputStream这两个包装类可用于输入流中读取对象类数据和将对象类型的数据写入到底层输入流 。ObjectInputStream 与 ObjectOutputStream 类所读写的对象必须实现了 Serializable 接口。需要注意的是:对象中的 transient 和 static 类型的成员变量不会被读取和写入 。
具体代码示例:
O bjectFileConvert.java
package michael.io; 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.util.ArrayList; import java.util.Date; import java.util.List; /** * @blog http://sjsky.iteye.com * @author Michael */ public class ObjectFileConvert { /** * 文件转化为Object * @param fileName * @return byte[] */ public static Object file2Object(String fileName) { FileInputStream fis = null; ObjectInputStream ois = null; try { fis = new FileInputStream(fileName); ois = new ObjectInputStream(fis); Object object = ois.readObject(); return object; } catch (Exception e) { e.printStackTrace(); } finally { if (fis != null) { try { fis.close(); } catch (IOException e1) { e1.printStackTrace(); } } if (ois != null) { try { ois.close(); } catch (IOException e2) { e2.printStackTrace(); } } } return null; } /** * 把Object输出到文件 * @param obj * @param outputFile */ public static void object2File(Object obj, String outputFile) { ObjectOutputStream oos = null; FileOutputStream fos = null; try { fos = new FileOutputStream(new File(outputFile)); oos = new ObjectOutputStream(fos); oos.writeObject(obj); } catch (Exception e) { e.printStackTrace(); } finally { if (oos != null) { try { oos.close(); } catch (IOException e1) { e1.printStackTrace(); } } if (fos != null) { try { fos.close(); } catch (IOException e2) { e2.printStackTrace(); } } } } /** * @param args */ @SuppressWarnings("unchecked") public static void main(String[] args) { String fileName = "d:/test/object.obj"; List<String> list = new ArrayList<String>(); list.add("michael"); list.add("大大"); ObjectFileConvert.object2File(list, fileName); System.out.println("success write List<String> to file."); List<String> tmpList = (List<String>) ObjectFileConvert .file2Object(fileName); for (String tmp : tmpList) { System.out.println(tmp); } System.out.println("--------------------------------"); fileName = "d:/test/uservo.obj"; UserVo vo = new UserVo("michael", "大大", 18, new Date()); ObjectFileConvert.object2File(vo, fileName); System.out.println("success write bean:UserVo to file."); UserVo tmpvo = (UserVo) ObjectFileConvert.file2Object(fileName); System.out.println("read bean:UserVo from file get info : " + tmpvo); } }
UserVo.java
package michael.io; import java.io.Serializable; import java.util.Date; /** * @blog http://sjsky.iteye.com * @author Michael */ public class UserVo implements Serializable { /** * serialVersionUID */ private static final long serialVersionUID = -6846034858002233878L; private String userId; private String userName; private int age; private Date born; public UserVo() { } public UserVo(String userId, String userName, int age, Date born) { this.userId = userId; this.userName = userName; this.age = age; this.born = born; } /** * @return the userId */ public String getUserId() { return userId; } /** * @return the userName */ public String getUserName() { return userName; } /** * @return the age */ public int getAge() { return age; } /** * @return the born */ public Date getBorn() { return born; } /** * @param pUserId the userId to set */ public void setUserId(String pUserId) { userId = pUserId; } /** * @param pUserName the userName to set */ public void setUserName(String pUserName) { userName = pUserName; } /** * @param pAge the age to set */ public void setAge(int pAge) { age = pAge; } /** * @param pBorn the born to set */ public void setBorn(Date pBorn) { born = pBorn; } @Override public String toString() { return "userId=[ " + userId + " ] userName=[ " + userName + " ] age=[ " + age + " ] born=[ " + born + "] ."; } }
运行结果如下:
success write List<String> to file.
michael
大大
--------------------------------
success write bean:UserVo to file.
read bean:UserVo from file get info : userId=[ michael ] userName=[ 大大 ] age=[ 18 ] born=[ Mon Aug 01 13:49:33 CST 2011] .
michael
大大
--------------------------------
success write bean:UserVo to file.
read bean:UserVo from file get info : userId=[ michael ] userName=[ 大大 ] age=[ 18 ] born=[ Mon Aug 01 13:49:33 CST 2011] .
本文连接:http://sjsky.iteye.com/blog/1137231
转载请注明来自:Michael's blog @ http://sjsky.iteye.com
----------------------------- 分 ------------------------------ 隔 ------------------------------ 线 ------------------------------
发表评论
-
$JAVA_HOME环境变量在Mac OS X中设置的问题
2014-01-19 20:31 1638系统版本:Mac OS X 10.9.1 在 ... -
JBoss IIOP实现CORBA/IIOP访问EJB的示例
2014-01-17 14:08 617目录 概述 特性 示例演示 详见:http:// ... -
JavaIDL开发CORBA实例演示
2013-10-25 15:51 524目录: 概述 开发步骤 创建Java项目 -
OpenORB开发CORBA的实例介绍
2013-10-25 15:50 1266目录: 概述 开发步骤 -
java读取控制台输入的几种方法
2013-10-24 09:01 1070java读取控制台输入的 ... -
OSX系统中各种JDK的路径说明
2013-10-15 08:50 641不同厂商发布的JDK,在OSX下的安装路径是不同的。以我本机 ... -
Java 完美判断中文字符
2012-11-23 17:23 1024详见:http://www.micmiu.com/ ... -
java自带的MD5、SHA1算法演示
2012-06-04 10:23 3065详见:http://www.micmiu.com/lang ... -
解决java网络编程IPv6问题
2012-04-05 13:38 1380详见:http://www.micmiu.com/lang/j ... -
swing中Label添加下划线几种方法(含完美版本)
2011-09-30 11:57 3331blog迁移至 :http://www.micmiu. ... -
Java实现给图片添加水印
2011-08-21 12:21 15824blog迁移至 :http://www.m ... -
proxool连接池介绍
2011-06-29 08:42 3907blog迁移至:http://www.micmiu.c ... -
c3p0配置介绍
2011-06-28 08:56 6607blog迁移至 :http://www.micmiu. ... -
apache-DBCP基本配置介绍
2011-06-27 00:04 13356blog迁移至:http://www ... -
JAVA中IP和整数相互转化介绍
2011-06-22 18:36 4775blog迁移至 :http://www.micmiu. ... -
JAVA线程池ThreadPoolExecutor
2011-06-21 19:00 8985blog迁移至:http://www.micmiu.c ... -
Java 获取当前Classpath
2011-06-19 11:50 8122blog迁移至:http://www ... -
Array和Collection相互转换以及copy深度的小测
2011-06-18 18:46 2264blog迁移至:http://www.micmiu.c ... -
扫描指定包下的类(包括jar文件里的类)
2011-05-27 12:56 5979blog迁移至:http://www.micmiu.c ... -
Java HotSpot dcevm 在debug模式下的热部署
2011-02-16 10:41 4335blog迁移至:http://www.micmiu.c ...
相关推荐
下面是一个简单的示例代码,演示了如何使用ObjectOutputStream和ObjectInputStream来实现序列化和反序列化: 首先,定义一个实现了Serializable接口的实体类Param: ```java public class Param implements ...
总结来说,Java对象序列化是将对象状态转换为字节流,便于存储和网络传输的关键技术。通过实现`Serializable`或`Externalizable`接口,我们可以控制对象如何被序列化和反序列化,同时`transient`关键字提供了保护...
Java对象的序列化和反序列化是Java编程中一项重要的技术,主要用于将对象的状态转换为字节流,以便存储或在网络上传输。这一过程对于理解Java的IO操作、持久化数据以及实现分布式通信等场景非常关键。 首先,我们来...
在Java编程语言中,对象的序列化和反序列化是两个关键的概念,它们对于数据存储、网络传输以及持久化有着重要的作用。这篇文章将深入探讨这两个主题,并通过实践例子来阐述其工作原理。 **序列化(Serialization)*...
总结来说,Java对象序列化是Java平台提供的一种强大的机制,用于保存和恢复对象的状态,广泛应用于持久化存储、网络传输和分布式计算等场景。理解和熟练使用序列化是每个Java开发者必备的技能之一。
Java序列化是Java平台中的一种标准机制,它允许将对象的状态转换为字节流,以便存储、传输或恢复。在Java中,一个类如果要实现序列化,需要实现`Serializable`接口,这是一个标记接口,不包含任何方法。下面我们将...
3. **远程方法调用(RMI)**:在Java RMI中,客户端和服务端之间的交互也依赖于序列化技术,以传输请求和响应对象。 #### 三、序列化的过程 当对一个对象实现序列化时,具体会发生以下过程: 1. **对象状态的保存**...
- 使用 `java.io.ObjectOutputStream` 类的 `writeObject()` 方法将对象写入到输出流,从而实现序列化。 - 使用 `java.io.ObjectInputStream` 类的 `readObject()` 方法从输入流读取对象,实现反序列化。 4. **...
在Java中,实现对象的序列化和反序列化主要依赖于`Serializable`接口。这是一个标记接口,意味着它没有提供任何方法,仅仅是告诉JVM该对象支持序列化。具体实现方式如下: 1. **序列化**: - 实现`Serializable`...
`ObjectOutputStream`和`ObjectInputStream`是Java提供的两个核心类,用于处理对象的序列化和反序列化。`ObjectOutputStream`的`writeObject()`方法是关键,它可以处理对象及其引用对象的序列化。每个`...
要序列化一个对象,可以使用`ObjectOutputStream`,反序列化则使用`ObjectInputStream`。虽然简单易用,但效率较低,且序列化的元数据(如类名、字段名)会被包含在字节流中,存在安全风险(如反序列化攻击)。 2. ...
### Java序列化与反序列化详解 #### 一、Java序列化概述 Java序列化(Serialization...综上所述,Java序列化提供了一种简单有效的方式来处理对象的持久化和传输需求,但开发者也需要考虑其可能带来的性能和安全问题。
序列化和反序列化是Java中非常重要的概念,它们提供了强大的工具来处理对象的状态保存和恢复问题。通过上述介绍和示例代码,我们可以看到序列化的基本过程及其应用场景。掌握这些知识对于开发高效可靠的Java应用程序...
在Java编程中,对象序列化是将一个对象的状态转换为可存储或可传输的数据格式的过程,而反序列化则是将这些数据恢复为原来的对象状态。这个过程在数据持久化、网络传输或者跨进程通信等场景中十分常见。Java提供了一...
Java中的序列化与反序列化是Java编程语言中用于处理对象状态持久化和网络传输的重要技术。序列化是指将一个Java对象转换为字节流的过程,这样就可以将对象的状态保存到磁盘上或者通过网络传输。反序列化则是将字节流...
总的来说,Java序列化是Java程序设计中一个强大的工具,它使得对象能够在不同的环境中持久化和复制,从而扩展了Java应用程序的灵活性和可移植性。理解并熟练掌握序列化机制对于高级软件开发者来说是非常重要的。
在Java中,一个基本的序列化操作通常包括两个步骤:对象的序列化(写入)和反序列化(读取)。 1. **对象序列化**: - 创建可序列化的类:首先,你需要定义一个类,并且在类声明中加入`implements Serializable`,...
在Java编程中,序列化是将对象的状态转换为字节流的过程,以便可以存储或在网络上传输。这个过程使得对象可以在不同的时间或者不同的系统之间进行恢复。然而,有时候我们不希望序列化对象的所有属性,可能是因为某些...
总之,Java序列化是一个强大的工具,它使得对象能够在不同的环境之间交换和恢复,但同时也需要注意安全问题,因为序列化可能暴露敏感信息。为了提高效率和安全性,有时可以考虑使用自定义的序列化方法或者其他的序列...