ObjectIntputStream / ObjectOutputStream 类

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

    }

}

 

 

 

 

posted @ 2019-10-29 17:27  小茅棚  阅读(388)  评论(0编辑  收藏  举报