使用 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. 【51nod 1355】 斐波那契数的最小公倍数

    题目 51nod的数学题都还不错啊 首先直接算显然是没有办法算的,因为\(fib\)的lcm这个东西还是太鬼畜了 我们考虑到\(fib\)数列的一个非常好的性质是\(gcd(fib_i,fib_{j} ...

  2. ArrayBlockingQueue的使用案例:

    ArrayBlockingQueue的介绍: ArrayBlockingQueue,顾名思义:基于数组的阻塞队列.数组是要指定长度的,所以使用ArrayBlockingQueue时必须指定长度,也就是 ...

  3. 让html里的js脚本延迟5秒运行

    setTimeout( function(){ //add your code}, 5 * 1000 );//延迟5000毫米

  4. 封装了一个HOOKAPI的类。。。

    我惊奇地发现,我手竟然这么生了.....   很久很久没有写这方面的东西,现在写着竟然这么手生....哎....   这玩艺,还得天天练....

  5. for update行级锁的作用

    1.for update叫排它锁,是一种行级锁,一旦用户对某个行施加了行级加锁,则该用户可以查询也可以更新被加锁的数据行,其它用户只能查询但不能更新被加锁的数据行.如果其它用户想更新该表中的数据行,则 ...

  6. 历届试题_DNA比对

    脱氧核糖核酸即常说的DNA,是一类带有遗传信息的生物大分子.它由4种主要的脱氧核苷酸(dAMP.dGMP.dCMT和dTMP)通过磷酸二酯键连接而成.这4种核苷酸可以分别记为:A.G.C.T.     ...

  7. 关于python中 and 和 or 的一些特殊使用

    print(True or 1)  # True print(1 or True) # 1 print(3 or 1) # 3 print(0 or 3) # 3 总结:or左边无论是 数字还是Boo ...

  8. GUID 使用方法

    GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台会提供生成GUID的API.生成算法很有意思,用到了以太网卡地址.纳秒级时间.芯片ID码和许多可 ...

  9. 在银行业中,BP是指什么?

    基点 Basis Point(BP)债券和票据利率改变量的度量单位.一个基点等于0.01个百分点,即0.01%,因此,100个基点等于1%.[例]一浮动利率债券的利率可能比LIBOR高10个基点,10 ...

  10. (codeforces 853A)Planning 贪心

    Helen works in Metropolis airport. She is responsible for creating a departure schedule. There are n ...