zoukankan      html  css  js  c++  java
  • java

    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

  • 相关阅读:
    paramiko模块
    JMeter 在beanshell中进行时间戳加减
    订阅号服务开发-05实战总结
    订阅号服务开发-04主动消息推送
    订阅号服务开发02-素材资源管理
    订阅号服务开发03-被动消息应答
    订阅号服务开发01-搭建开发环境
    Docker11-实战-部署多套环境
    Docker10-实战-构建Java Web运行环境
    Docker09-实战-快速搭建wordpress
  • 原文地址:https://www.cnblogs.com/clamp7724/p/11645619.html
Copyright © 2011-2022 走看看