`

ObjectOutputStream和ObjectInputStream类的学习

阅读更多
ObjectOutputStream和ObjectInputStream类所读写的对象必须实现了Serializable的接口,对象中的transient和static类型的成员变量不会被读取和写入.

下面写个简单的例子:
1. SerializationTest.java文件
package cn.com;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class SerializationTest {

	public static void main(String[] args) {

		Student student1 = new Student(19, "zhangsan", 25, "chemistry");
		Student student2 = new Student(20, "lisi", 23, "phsical");
		try {
			FileOutputStream fos = new FileOutputStream("student.txt");
			ObjectOutputStream os = new ObjectOutputStream(fos);

			os.writeObject(student1);
			os.writeObject(student2);
			os.close();

			FileInputStream fis = new FileInputStream("student.txt");
			ObjectInputStream is = new ObjectInputStream(fis);

			try {
				student1 = (Student) is.readObject();
				student2 = (Student) is.readObject();

				is.close();

				System.out.println("id1 = " + student1.id);
				System.out.println("name1 = " + student1.name);
				System.out.println("id2 = " + student2.id);
				System.out.println("name2 = " + student2.name);

			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}




2.Student.java文件
package cn.com;

import java.io.Serializable;

public class Student implements Serializable {

	int id;

	String name;

	int age;

	String department;

	public Student(int id, String name, int age, String department) {
		this.id = id;
		this.name = name;
		this.age = age;
		this.department = department;
	}

}


分享到:
评论
2 楼 sf_dream 2014-11-20  
我要是读写list、map之类的集合呢
1 楼 fanfubao 2010-10-27  
这个学习了,不错,但就是还是不太明白,呵呵

相关推荐

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

    在Java中,ObjectOutputStream和ObjectInputStream是两个非常重要的类,分别用于序列化和反序列化。ObjectOutputStream将Java对象转换为字节流,而ObjectInputStream则将字节流恢复为Java对象。 下面是一个简单的...

    ObjectInputStream

    通过学习和实践`ObjectInputStream`,开发者可以有效地在内存、磁盘或网络之间传递Java对象,增强了程序的灵活性和可移植性。不过,同时也需要注意安全性和版本兼容性问题。在实际开发中,理解并掌握这些知识点是至...

    java.io常用方法(基本)

    我自己写的一些关于IO中的见解,可以用来参考。 File的增、删、改、查,FileReader和FileWriter类,BufferedReader和BufferedWriter类,ObjectOutputStream和ObjectInputStream类

    socket objectoutputstream 传对象 例子

    在Java编程中,Socket和ObjectOutputStream是两个非常重要的概念,它们是进行网络通信的基础。Socket是TCP/IP协议的实现,提供了两台计算机之间双向、独立的数据传输通道。而ObjectOutputStream则是一个序列化流,...

    实验一java对象串行化编程.doc

    我们使用 FileOutputStream 和 FileInputStream 来读写文件,然后使用 ObjectOutputStream 和 ObjectInputStream 来将对象写入到文件中或从文件中读取对象。 实验目的: 1. 掌握对象串行化的概念和作用 2. 掌握...

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

    在 Java 中,`ObjectInputStream` 和 `ObjectOutputStream` 是两个非常重要的类,它们分别用于实现对象的反序列化和序列化。序列化是将对象的状态转换为字节流的过程,以便可以存储在磁盘上或通过网络传输。反序列化...

    JavaIOObjectStreams:FileInputStream 与 ObjectInputStream 和 ObjectOutputStream 的组合

    在Java I/O体系中,ObjectInputStream和ObjectOutputStream是两个关键类,它们提供了序列化和反序列化的功能,使得Java对象可以被写入到流中(例如磁盘或网络)并在之后重新读取。而FileInputStream则用于处理二进制...

    使用流套接字建立客户机

    使用流套接字建立客户机 运用ObjectOutputStream,ObjectInputStream,ServerSocket,Socket;

    Java对象流实例代码

    该机制通过使用ObjectOutputStream和ObjectInputStream两个类来实现对象的序列化和反序列化。 在Java对象流实例代码中,主要使用了ObjectOutputStream和ObjectInputStream两个类。ObjectOutputStream用于将对象写入...

    对象的写入与读取。将一个类的对象(例如:Calendar)写入到文件,然后顺序读出该对象,并验证读出的对象是否原始对象的克隆。

    4. **数据流和对象流**:数据流(如`DataOutputStream`和`DataInputStream`)通常用于处理基本数据类型,而对象流(`ObjectOutputStream`和`ObjectInputStream`)则专门处理Java对象。 5. **缓冲流...

    java基于命令行的学生成绩管理系统.pdf

    Java提供了ObjectOutputStream和ObjectInputStream类来进行对象的序列化和反序列化操作。 **实验过程及算法** 1. **设计学生类接口**:定义接口,包含添加成绩、查询成绩、显示排名等方法。 2. **实现集合操作**:...

    java多线程结合界面开发实例(原创)财务管理系统源代码和效果图[参考].pdf

    我们使用了ObjectOutputStream和ObjectInputStream类来实现对象的序列化和反序列化。 知识点10:Java开发实践 在这个实例中,我们使用了Java开发实践来实现财务管理系统。我们遵循了Java开发的最佳实践,使用了...

    Java输入输出练习

    通过这个实验,学生将学习如何使用 Java 语言进行文件输入输出操作,掌握 ObjectInputStream 和 ObjectOutputStream 两个类的使用方法,并了解如何将数据写入磁盘文件中。 一、实验目的 本次实验的目的是通过对 ...

    JAVA网络通信系统的研究与开发(论文+源代码+开题报告).rar

    ObjectOutputStream和ObjectInputStream类允许我们将Java对象转换为字节流,通过网络传输,然后在另一端恢复为原来的对象。这对于传递复杂的数据结构,如用户信息、订单等,非常实用。 论文中可能还涉及了异常处理...

    序列化Demo

    “序列化Demo”的内容可能包括了如何创建可序列化的Java类,如何使用ObjectOutputStream和ObjectInputStream进行序列化和反序列化操作,以及如何处理序列化过程中可能出现的问题,如版本控制和安全性。同时,IPCDemo...

    用java做的简易版QQ,只适用于学习

    ObjectOutputStream和ObjectInputStream类分别用于对象的序列化和反序列化。 5. **用户界面设计**:尽管这是一个简化版的QQ,但仍需有基本的用户交互界面。这可能涉及到Java Swing或JavaFX库,用于创建窗口、按钮、...

    java-chat-tool.zip_tool

    Java提供了ObjectOutputStream和ObjectInputStream类用于对象的序列化和反序列化,这样可以将聊天消息转化为字节流在网络上传输,到达目的地后再还原为原始对象。 代码的可维护性和优化也是重要的一环。如果部分...

    Java学习资料&项目源码&教程,基于java的聊天系统的设计于实现(系统35).zip

    3. **数据序列化**:Java的ObjectOutputStream和ObjectInputStream类用于序列化和反序列化对象,使得可以将聊天消息(可能是自定义的对象)通过网络传输。 4. **图形用户界面(GUI)**:Java提供了Swing和JavaFX等...

    北京动力节点Java零基础教程006 IO流作业答案,自己写的

    Java提供标准的序列化API,主要包括java.io.Serializable接口和ObjectOutputStream及ObjectInputStream类。 使用序列化,我们可以持久化对象的状态,即使程序关闭后,再次运行时也能恢复之前的对象状态。例如,在...

    java IO类学习一点通

    - ObjectInputStream和ObjectOutputStream:允许我们序列化和反序列化Java对象,进行持久化存储或网络传输。 5. 文件操作: - File类:提供文件和目录的创建、删除、重命名等操作,但不涉及文件内容的读写。 - ...

Global site tag (gtag.js) - Google Analytics