使用 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();
} } }

最新文章

  1. 判断用户是否是第一次打开该app
  2. c#设计模式之单例模式
  3. C++-const_cast, reinterpret_cast, static_cast的用法
  4. nedb nodejs 数据库学习
  5. tar.gz和rpm安装文件(转载)
  6. CentOS下几种软件安装方式
  7. 戴尔CEO:我们将专注于企业 而非手机业务
  8. webuploader问题
  9. 正规消息发送器-- ESFramework 4.0 进阶(06)
  10. Eclipse的操作技巧
  11. springMvc项目的搭建,暂时没有整合持久层框架(java Config配置对比xml配置)
  12. [LeetCode] Can Place Flowers 可以放置花
  13. Java 内部类的作用
  14. css实现不定高度的元素垂直居中问题
  15. 如何使用Simulink模糊控制
  16. AngularJS 高级程序设计
  17. Spring Boot学习笔记:ApplicationEvent和ApplicationEventListener事件监听
  18. bzoj2262: 平行宇宙与虫洞
  19. A标签中传递的中文参数到Servlet 后台request.getParameter()接收时出现中文乱码
  20. dumpe2fs命令详解

热门文章

  1. 分布式配置中心(Spring Cloud Config)
  2. AIO异步非阻塞学习
  3. Codeforces 500D. New Year Santa Network
  4. Errors were encountered while processing: mysql-server-5.5
  5. C语言处理字符串及内存操作
  6. Ubuntn16.04+OpenCV3.1+CUDA8.0+cudnn5.1+caffe配置及问题集锦
  7. Django项目:CMDB(服务器硬件资产自动采集系统)--07--06CMDB测试Linux系统采集硬件数据的命令02
  8. [转]js模块化(一)
  9. C++和G++手工开栈的=_=
  10. mysql知识点回顾与梳理