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

  • 相关阅读:
    使用C#调用C++类库
    C# IntPtr类型
    C# 调用C++ dll string类型返回
    C# try、catch、finally语句
    C语言 char *、char []、const char *、string的区别与相互转换
    C# 字符串string与char数组互转!
    C#如何调用C++(进阶篇)
    Springboot通过过滤器实现对请求头的修改
    【spring事务】
    命令行参数库:McMaster.Extensions.CommandLineUtils【转】
  • 原文地址:https://www.cnblogs.com/clamp7724/p/11645619.html
Copyright © 2011-2022 走看看