`
strawberry2013
  • 浏览: 17932 次
文章分类
社区版块
存档分类
最新评论

黑马程序员_IO流_对象的序列化ObjectInputSTream/ObjectOutputStream

 
阅读更多

-------android培训java培训、期待与您交流! ----------


没有方法的接口称为标记接口,如Serializable
只有继承Serializable才能进行序列化,用以给编译时期分配一个serialVersionUID
在读取序列化对象过程中,检测对象的serialVersionUID和该类的serialVersionUID是否匹配

部分不被序列化(即该成员不被存储至文件上)
加上关键字transient,该成员也不被序列化

静态成员不能序列化,只能序列化堆中成员


ObjectOutputStream的writeObject方法
ObjectInputStream的readObject()方法


/*
元素的序列化
Strawberry2013-5-5

*/
import java.io.*;

class SerialDemo
{
	public static void main(String[] args) throws Exception
	{
		//write();
		read();
	}
	public static void read() throws Exception
	{
		ObjectInputStream obji = new ObjectInputStream(new FileInputStream("obj.txt"));
		Person p =null; 
		while((p=(Person)obji.readObject()) != null)// !!!到达末尾,再读取会发生java.io.EOFException异常
		{
			System.out.println(p);//
		}
		obji.close();
	}
	public static void write() throws IOException
	{
		ObjectOutputStream objo = new ObjectOutputStream(new FileOutputStream("obj.txt"));
		objo.writeObject(new Person("zhang", 23));
		objo.writeObject(new Person("li", 20));
		objo.writeObject(new Person("wang", 21));
		objo.writeObject(null)	//此处新建一个null值,方便检查末尾
		objo.close();
	}
}
class Person implements Serializable	//必须继承Serializable 用以给类在编译时期分配一个serialVersionUID
{						//在读取序列化对象过程中,检测对象的serialVersionUID和该类的serialVersionUID是否匹配
	public static final long serialVersionUID = 42L;//可以为该类分配一个固定的serialVersionUID值,即使该类修改也可读取
	private String name;
	transient int a;	//加上关键字transient,该成员也不被序列化	---即对象的值不被存储在文件上
	public static int a;	//静态成员不能序列化,只能序列化堆中成员
	private int age;
	Person(String name,int age)
	{
		this.name = name;
		this.age = age;
	}
	public String toString()
	{
		return "name: "+name+" age: "+age;
	}
}


分享到:
评论

相关推荐

    Java高级程序设计实战教程第五章-Java序列化机制.pptx

    对象序列化是Java编程中的必备武器 Java高级程序设计实战教程第五章-Java序列化机制全文共15页,当前为第4页。 5.2.2 序列化应用 当你想把内存中的对象状态保存到一个文件中或者数据库中时候; 当你想用套接字在...

    序列化与反序列化

    序列化: 就是使用流的技术将对象中的数据保存到文件中。 反序列化: 就是使用流的技术将文件中的数据读取到对象中。 使用到的流技术 序列化:ObjectOutputStream 反序列化:ObjectInputStream ObjectOutputStream...

    groovy-io:与JSON格式之间完美的Groovy序列化。 此外,还支持JSON的精美打印(与jsonEditorOnline样式匹配)

    groovy-io消除了使用ObjectInputStream / ObjectOutputStream序列化对象的需要,而使用了JSON格式。 有第三个可选类( JsonObject ),请参见下面的“非类型化用法”。 groovy-io不需要类实现Serializable或...

    WEBSphere反序列化漏扫.rar

    Java 序列化是指把 Java 对象转换为字节序列的过程,便于保存在内存、文件、数据库中,ObjectOutputStream类的 writeObject() 方法可以实现序列化。反序列化是指把字节序列恢复为 Java 对象的过程,...

    java序列化与ObjectOutputStream和ObjectInputStream的实例详解

    主要介绍了java序列化与ObjectOutputStream和ObjectInputStream的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下

    ObjectInputStream 和 ObjectOutputStream 介绍_动力节点Java学院整理

    ObjectInputStream 和 ObjectOutputStream 的作用是,对基本数据和对象进行序列化操作支持。本文给大家详细介绍了ObjectInputStream 和 ObjectOutputStream的相关知识,感兴趣的朋友一起学习吧

    IO体系.java

    |--ObjectInputStream/:对象的序列化。用于操作对象的流,将一个具体的对象进行持久化写入到硬盘上。 | |--PipedInputStream/:管道流。管道读取流可以读取管道写入流的数据。注意:需要加多线程技术,否则会发生...

    Java之IO流学习总结

    Java IO流学习总结 Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据...

    序列化

    Java中提供了一种序列化操作的方式,用一个字节序列化来表示一个对象,该字节序列化中保存了【对象的属性】,【对象的类型】和【对象的数据】。把字节序列化保存到文件中,就可以做到持久化保存数据内容。 从文件中...

    实验一对象序列化1

    } 由于定义了二个接口方法,方法参数分别是ObjectOutputStream和ObjectInputStream类型对象,因此这二个接口方法必须通过实现该接口

    ObjectInputStream

    ObjectInputStream序列化实例,简单就学会,JAVA原来so easy

    JAVA笔记??序列化

     在Java中提供有ObjectInputStream与ObjectOutputStream这两个类用于序列化对象的操作。这两个类是用于存储和独缺对象的输入输出流类,只要把对象中的所有成员变量都存储起来,等于保存了这个对象,之后从保存的...

    使用Java序列化实现一个简单的文件备份工具.txt

    在该方法中,首先通过FileInputStream和ObjectInputStream读取源文件对象,然后通过ObjectOutputStream将读取的对象写入备份文件中。这个简单的示例代码展示了如何使用Java序列化来实现一个文件备份工具的简单功能,...

    JavaIOObjectStreams:FileInputStream 与 ObjectInputStream 和 ObjectOutputStream 的组合

    JavaIO对象流 FileInputStream 与 ObjectInputStream 和 ObjectOutputStream 的组合 奥利弗·缪尔

    Java序列化

    Java中提供了一种序列化操作的方式,用一个字节序列化来表示一个对象,该字节序列化中保存了==【对象的属性】,【对象的类型】和【对象的数据】。把字节序列化保存到文件中,就可以做到持久化==保存数据内容。 从...

    J2SE中的序列化的认识

    只要我们的class 实现了java.io.Serializable接口,就可以利用ObjectOutputStream的writeObject()方法将一个对象序列化;利用ObjectInputStream的readObject()方法,可以返回读出的object对象。Serializable接口...

    JDK_API_1_6

    ObjectInputStream ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化。 ObjectInputStream.GetField 提供对从输入流读取的持久字段的访问权限。 ObjectOutputStream ...

    IO流各个类的使用方法

    ObjectInputStream ObjectOutputStream ByteArrayInputStream ByteArrayOutputStream 【字符流】 Reader Writer InputStreamReader OutputStreamWriter BufferedReader BufferedWriter /PrintWriter FileReader ...

    java输入输出流 流式输入与输出

    java.io包中,提供了ObjectInputStream和ObjectOutputStream将数据流功能扩展至可读写对象。在ObjectInputStream中用readObject()方法可以直接读取一个对象,ObjectOutputStream中用writeObject()方法可以直接将对象...

    录入输出系统

    录入输出项目,帮助网友解决问题:1、界面的切换,2、对象序列化问题ObjectInputStream ObjectOutputStream 储存数据用的记事本系列化对象的方法

Global site tag (gtag.js) - Google Analytics