字节过滤流之对象流

ObjectOutputStream/ObjectInputStream

功能:

1.增强的缓冲区功能

2.增强了读写8种基本数据类型和字符串功能

3.增强了读写对象的功能

        3.1readObject()从流中读取一个对象

        3.2(object obj)向流中写入一个对象

4.使用流传输的对象的过程称为序列化、反序列化

大家平时打开一个文档时可能会出现这样的问题:

很多也不知道是啥:

下面用一段代码来看一下:

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;

public class TestQuestion13 {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream("C:\\Users\\Lenovo\\Desktop\\test.txt");
        ObjectInputStream ois = new ObjectInputStream(fis); 
        
        while(true){
            try{
                Object o = ois.readObject();
                System.out.println(o);
            }catch(Exception e){
                break;
            }
            
        }    
    }
}
结果:

Person [name=光芒, age=21, sex=男, professional=无业游民]
Person [name=公民, age=21, sex=男, professional=有志青年]

哈哈,其实上面那个是自己用对象流的方式传入传输的一些信息,想要真正解决的话还是去搜索一下,或者请教专业人员

输入代码:

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
/**

通过对象流的方式,将信息存入到文本文档中

*/

public class TestOutputStream {

    public static void main(String[] args) throws IOException {
        FileOutputStream f = new FileOutputStream("C:\\Users\\Lenovo\\Desktop\\test.txt");
        ObjectOutputStream oot = new ObjectOutputStream(f);
        Person p1 = new Person("光芒" , 21 , "男" , new Professional("无业游民"));
        Person p2 = new Person("公民" , 21 , "男" , new Professional("有志青年"));
        oot.writeObject(p1);
        oot.writeObject(p2);
        oot.flush();
        oot.close();
        
    }

}
class Person implements Serializable{
    String name;
    Integer age;
    String sex;
    Professional professional;
    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + ", sex=" + sex + ", professional=" + professional + "]";
    }

//人的信息实现Serializable接口
    public Person(String name, Integer age, String sex, Professional professional) {
        super();
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.professional = professional;
    }
}

//职业实现Serializable接口
class Professional implements Serializable{
    String professional;

    public Professional(String professional) {
        super();
        this.professional = professional;
    }
    public String toString() {
        return professional;
    }
}

发布了33 篇原创文章 · 获赞 85 · 访问量 5545

猜你喜欢

转载自blog.csdn.net/S9264L/article/details/104910241