java - I/O - 对象流

ObjectInputStream

ObjectOutputStream

package io;

import java.io.*;

public class ObjectStreamTest {
    public static void main(String[] args){

        TargetObject to1 = new TargetObject("aaa");  //测试用对象

        FileInputStream fis = null;
        FileOutputStream fos = null;

        ObjectInputStream ois = null;
        ObjectOutputStream oos = null;
        try {
            fos = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\test\\objectTest.txt");
            oos = new ObjectOutputStream(fos);  //高级流,用来处理低级流, 对象流,数组流,缓存流等都是高级流
            oos.writeObject(to1);
            oos.flush();
            //存入成功,不过内容是乱码,就不贴了


            fis = new FileInputStream("C:\\Users\\Administrator\\Desktop\\test\\objectTest.txt");
            ois = new ObjectInputStream(fis);
            TargetObject to2 = (TargetObject) ois.readObject();  //readObject()返回的是Object类型,需要强转
            to2.show();
            //name = aaa| num = 1
            //读取成功


        }catch(Exception e){
            e.printStackTrace();
        }finally {
            if(fis != null){
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(ois != null){
                try {
                    ois.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(fos != null){
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(oos != null){
                try {
                    oos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

测试用的类

package io;

import java.io.Serializable;

public class TargetObject implements Serializable {  //必须要继承序列化的接口才能序列化(分解成固定格式)后保存在文件里
    private String name;
    private static int num;

    public TargetObject(){
    }

    public TargetObject(String name){
        this.name = name;
        num++;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public static int getNum() {
        return num;
    }

    public void show(){
        System.out.print("name = " + name + "| num = " + num);
    }
}

低级流:

FileInputStream

FileOutputStream

FileWriter

FileReader

高级流:

高级流都是通过低级流进行工作,可以理解为对低级流进行了扩展

比如:

缓存流  BufferedReader, BufferedWriter, BufferedInputStream, BufferedOutputStream

字符串流  StringReader, StringWriter

数组流  ByteArrayInputStream ByteArrayOutputStream, CharArrayReader, CharArrayWriter

对象流  ObjectInputStream, ObjectOutputStream

猜你喜欢

转载自www.cnblogs.com/clamp7724/p/11645619.html