使用 ObjectInputStreamObjectOutputStream
将对象整体 读 / 写文件中: 【读写对象】

1. ObjectInputStream类
(1)基本概念
java.io.ObjectInputStream类用于将文件的对象整体读取出来。
 
(2)常用的方法
构造方法:
ObjectInputStream(InputStream in) - 根据参数指定的引用构造对象。
- InputStream类是个抽象类,实参需要传递子类的对象。
 
普通方法:
Object readObject() - 用于读取输入流中的一个对象并返回。
- 无法根据返回值来判断是否读取到文件的末尾。
void close() - 关闭流对象。
 

代码:
写一个User类
package com.monekey1025;

public class User implements java.io.Serializable{
private static final long serialVersionUID = 1L; private String userName;
private String passWord; //transient修饰成员变量,表示该成员变量不能进行序列化操作
private transient String email; @Override
public String toString() {
return "User [userName=" + userName + ", passWord=" + passWord + ", email=" + email + "]";
} public User() {
super();
}
public User(String userName, String passWord, String email) {
super();
setUserName(userName);
setPassWord(passWord);
setEmail(email);
} public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
 
package com.monekey1025;
import java.io.FileInputStream;
import java.io.ObjectInputStream; public class TestObjectInputStream { public static void main(String[] args) { try{
//1.创建ObjectInputStream类型的对象与指定的文件关联
ObjectInputStream ois = new ObjectInputStream(
new FileInputStream("E:\\welcome.txt"));
//2.读取文件中的一个对象并打印出来
Object obj = ois.readObject();
if(obj instanceof User){
User user = (User)obj;
System.out.println(user);
}
//3.关闭流对象
ois.close();
}catch(Exception e){
e.printStackTrace();
} } }
 

3.1 ObjectOutputStream类(重点)
 
(1)基本概念
java.io.ObjectOutputStream类用于将一个对象整体写入到输出流中。
只能将支持java.io.Serializable 序列化 接口的对象写入流中。
类通过实现 java.io.Serializable 序列化 接口以启用其 序列化功能 (将整个对象的所有信息转换为字节流信息的过程)。
 
序列化: 把一个对象自动转换为字节流,然后整体写入到文件中的过程。
transient 关键字修饰成员变量,表示该成员变量 不能被进行序列化操作。
只要把一个对象整体写入到一个文件中,就必须让这个对象的类实现这个Serializable接口。
 
 
(2)常用的方法
构造方法:
ObjectOutputStream(OutputStream out) - 根据参数指定的引用构造对象。
- OutputStream类是抽象类,实参传递该类的子类对象。
 
普通方法:
void writeObject(Object obj) - 将参数指定的对象整体写入到流中。
void flush( ) - 刷新流对象。
void close( ) - 关闭流对象。
 
 代码
import java.io.FileOutputStream;
import java.io.ObjectOutputStream; public class TestObjectOutputStream { public static void main(String[] args) { try{
//1.创建ObjectOutputStream类的对象与指定的文件关联
ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream("c:/user.dat"));
//2.准备User类型的对象并进行初始化
User user = new User("Mark", "123456", "xiaomg@163.com");
//3.将User类型的对象整体写入到文件中
oos.writeObject(user);
System.out.println("写入对象成功!");
//4.关闭输出流对象
oos.flush();
oos.close();
}catch(Exception e){
e.printStackTrace();
} } }

ObjectIntputStream / ObjectOutputStream 类的更多相关文章

  1. serialVersionUID, ObjectInputStream与ObjectOutputStream类,Serializable接口,serialVersionUID的作用和用法

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

  2. ObjectInputStream与ObjectOutputStream类实现对象的存取

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

  3. Java 之 ObjectOutputStream 类

    ObjectOutputStream 类 1.概述 java.io.ObjectOutputStream extends OutputStream ObjectOutputStream:对象的序列化流 ...

  4. ObjectOutputStream和ObjectInputStream

    官方解释: ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream.可以使用 ObjectInputStream 读取(重构)对象.通过使用流中的文 ...

  5. 黑马程序员——【Java基础】——File类、Properties集合、IO包中的其他类

    ---------- android培训.java培训.期待与您交流! ---------- 一.File类 (一)概述 1.File类:文件和目录路径名的抽象表现形式 2.作用: (1)用来将文件或 ...

  6. 序列化、反序列化(实体类或要序列化的对象类必须实现Serializable接口)

    package com.phone.shuyinghengxie; import java.io.Serializable; /* 一个类的对象要想序列化成功,必须满足两个条件: 该类必须实现 jav ...

  7. ObjectOutputStream 追加写入读取错误

    摘自http://blog.csdn.net/mitkey/article/details/50274543 问题描述: 用类ObjectOutputStream向文件写读对象时,碰到一个问题:新建一 ...

  8. ObjectOutputStream 和 ObjectInputStream的使用

    一.看一下API文档 ObjectOutputStream : ObjectOutputStream 将 Java 对象的基本数据类型和图形写入 OutputStream.可以使用 ObjectInp ...

  9. Java-IO之对象输入流输出流(ObjectInputStream和ObjectOutputStream)

    ObjectInputStream和ObjectOutputStream的作用是对基本数据和对象进行序列化操作支持.创建文件输出流对应的ObjectOutputStream对象,该ObjectOutp ...

随机推荐

  1. Redis学习笔记01-分布式锁

    1.分布式锁的定义与理解 在并发任务中,当对数据执行修改和删除时为了防止多个任务同时拿到数据而产生的混乱,这时就要用到分布式锁来限制程序的并发执行. Redis分布式锁本质上要实现的目标就是在Redi ...

  2. linux中断处理-顶半部(top half)和底半部(bottom half) -转

    原文:http://rensanshi.blog.163.com/blog/static/21395510820136282224877/ 设备的中断会打断内核中进程的正常调度和运行,系统对更高吞吐率 ...

  3. Lab 2 内存管理

    常见的操作系统 只使用了 0 和3 段选择子 DPL 是段描述符的内容 段的信息 中断和陷入的 大致特权级的展现 RPL 当前要访问数据段对饮给的特权级 CPL 当前代码段的特权级 DPL 全局的 通 ...

  4. net.sf.json JSONObject与JSONArray使用实例

    实例自己想的一个实例应用场景:一个人可以有多个角色,例如:在家中是儿子,在学校是学生,在公司是程序员,一个人还可以办好多业务 * 每个业务好多个人都可以办,则标记(mark)就是记录这唯一标识的(如i ...

  5. Leetcode961. N-Repeated Element in Size 2N Array重复N次的元素

    在大小为 2N 的数组 A 中有 N+1 个不同的元素,其中有一个元素重复了 N 次. 返回重复了 N 次的那个元素. 示例 1: 输入:[1,2,3,3] 输出:3 示例 2: 输入:[2,1,2, ...

  6. 2、设备树的规范(dts和dtb格式)

    第01节_DTS格式(1) 语法:Devicetree node格式:[label:] node-name[@unit-address] { [properties definitions]      ...

  7. parameter–precharge, tRCD and tRAS

    以下描述来自wikipeida : https://en.wikipedia.org/wiki/Synchronous_dynamic_random-access_memory 几点总结: (1) 每 ...

  8. 系统性能信息模块psutil

    目录 前言 获取系统性能信息 CPU 内存 磁盘 网络信息 其他系统信息 系统进程管理方法 进程信息 popen类 查看系统硬件的小脚本 前言 psutil 是一个跨平台库,能够轻松实现获取系统运行的 ...

  9. vue.js_02_vue.js的基础指令

    1.v-cloak 作用:解决插值表达式闪烁的问题 当网速过慢时,或者加载数据时间过长时,网页会出现  {{msg}}  的现象 使用方法: <!--缺陷需要写style样式--> < ...

  10. psu online course

    https://onlinecourses.science.psu.edu/statprogram/programs Graduate Online Course Overviews Printer- ...