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

  • 相关阅读:
    深拷贝与浅拷贝+可变与不可变的数据类型
    列表+列表循环+列表切片+元祖
    接口+session与cookie的区别+http状态码
    JSP中文乱码问题终极解决方案
    关于AS使用git的那些奇葩事儿
    ListView中动态显示隐藏HeaderView和FooterView
    关于沉浸式的那些奇葩问题
    Android Bug分析系列:第三方平台安装app启动后,home键回到桌面后点击app启动时会再次启动入口类bug的原因剖析
    快速搭建tab
    使用 gradle 在编译时动态设置 Android resValue / BuildConfig / Manifes中<meta-data>变量的值
  • 原文地址:https://www.cnblogs.com/clamp7724/p/11645619.html
Copyright © 2011-2022 走看看