zoukankan      html  css  js  c++  java
  • 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();
            }
    
        }
    
    }
  • 相关阅读:
    随机生成三十个二年级的加减乘除法的题目代码
    学习进度表_四周
    返回一个整数数组中最大子数组的和1
    学习进度表_三周
    四则运算4
    构建之法读书笔记2
    学习进度表_二周
    四则运算3
    四则运算2
    单元测试
  • 原文地址:https://www.cnblogs.com/penguin1024/p/11760141.html
Copyright © 2011-2022 走看看