- 浏览: 480911 次
- 性别:
- 来自: 西安
-
文章分类
最新评论
-
752258:
...
Java文件操作(FIle类) [转] -
darrendu:
帮我解决了问题
启动出了问题:unexpected inconsistency;RUN fsck MANUALLY -
_lostman:
怎么反着来?
如果我现有一个第三方的库,如何在JAVA中调用? ...
java中JNI调用c++的dll -
caoruntao:
brother涛,你太牛了。博客访问量竟然有6W多。不得了呀
java clone -
passlicense:
好文章!顶~
unicode和ISO 8859-1
[转]http://sjsky.iteye.com/blog/1137231
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] .
发表评论
-
java clone
2012-02-27 17:12 1361【转】http://zhengjunwei2007-163-c ... -
Java程序性能优化
2012-02-27 17:02 822一、避免在循环条件中使用复杂表达式 在不做编译优化的情况 ... -
Java 访问权限
2012-02-27 16:54 1229[转]http://www.cnblogs.com/itao/ ... -
Java方法继承、方法重载、方法覆盖小总结
2012-02-27 16:42 1152[转] http://blog.csdn.net/c ... -
关于 java 您不知道的 5 件事 系列
2011-08-31 15:16 846http://www.ibm.com/developerwor ... -
ConcurrentHashMap与CopyOnWriteArrayList比较
2011-08-31 15:10 1325【转】http://www.iteye.com/t ... -
ConcurrentHashMap Collections.synchronizedMap和Hashtable讨论
2011-08-31 15:09 1184[转]http://www.w3china.org/blog/ ... -
JAVA的Random类
2011-08-30 15:22 878【转】http://www.cnblogs.com ... -
Direct vs non-direct ByteBuffer
2011-08-30 14:55 1181[转]http://littcai.iteye.com/blo ... -
详细介绍Java垃圾回收机制
2011-08-29 22:57 1263【转】http://developer.51cto.com/a ... -
System.gc() 和System.runFinalization()
2011-08-29 22:52 1621The Java language provide ... -
Java对象的强、软、弱和虚引用
2011-08-29 21:43 914[转]http://developer.51cto.com/a ... -
java对象,引用,实例
2011-08-22 11:05 597[转]http://jzgl-javaeye.iteye.co ... -
垃圾收集解析
2011-08-22 09:15 814[转]http://www.cnblogs.com/rolle ... -
Java i++原理及i=i++的问题说明
2011-08-20 16:21 1600[转]http://blog.sina.com.cn/s/bl ... -
Java中的transient,volatile和strictfp关键字
2011-06-21 16:36 968转:http://www.iteye.com/topic/52 ... -
如何使用Proxy模式及Java内建的动态代理机制
2011-06-09 20:09 9411.Proxy模式 代理模式支持将某些操作从实际的对象中 ... -
System.load和System.loadLibrary
2011-05-24 21:49 1468转:http://hi.baidu.com/mynetbean ... -
static块到底什么时候执行?
2011-05-19 18:34 1233转:http://www.iteye.com/topic/11 ... -
java一行一行写入或读取数据
2011-05-17 17:27 3229转:http://www.cnblogs.com/linj ...
相关推荐
下面是一个简单的示例代码,演示了如何使用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()`方法是关键,它可以处理对象及其引用对象的序列化。每个`...
### Java序列化与反序列化详解 #### 一、Java序列化概述 Java序列化(Serialization...综上所述,Java序列化提供了一种简单有效的方式来处理对象的持久化和传输需求,但开发者也需要考虑其可能带来的性能和安全问题。
序列化和反序列化是Java中非常重要的概念,它们提供了强大的工具来处理对象的状态保存和恢复问题。通过上述介绍和示例代码,我们可以看到序列化的基本过程及其应用场景。掌握这些知识对于开发高效可靠的Java应用程序...
在Java编程中,对象序列化是将一个对象的状态转换为可存储或可传输的数据格式的过程,而反序列化则是将这些数据恢复为原来的对象状态。这个过程在数据持久化、网络传输或者跨进程通信等场景中十分常见。Java提供了一...
Java中的序列化与反序列化是Java编程语言中用于处理对象状态持久化和网络传输的重要技术。序列化是指将一个Java对象转换为字节流的过程,这样就可以将对象的状态保存到磁盘上或者通过网络传输。反序列化则是将字节流...
总的来说,Java序列化是Java程序设计中一个强大的工具,它使得对象能够在不同的环境中持久化和复制,从而扩展了Java应用程序的灵活性和可移植性。理解并熟练掌握序列化机制对于高级软件开发者来说是非常重要的。
在Java中,一个基本的序列化操作通常包括两个步骤:对象的序列化(写入)和反序列化(读取)。 1. **对象序列化**: - 创建可序列化的类:首先,你需要定义一个类,并且在类声明中加入`implements Serializable`,...
在Java编程中,序列化是将对象的状态转换为字节流的过程,以便可以存储或在网络上传输。这个过程使得对象可以在不同的时间或者不同的系统之间进行恢复。然而,有时候我们不希望序列化对象的所有属性,可能是因为某些...
总之,Java序列化是一个强大的工具,它使得对象能够在不同的环境之间交换和恢复,但同时也需要注意安全问题,因为序列化可能暴露敏感信息。为了提高效率和安全性,有时可以考虑使用自定义的序列化方法或者其他的序列...