• Java对象序列化和反序列化的工具方法


    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.io.Serializable;
    
    /**
     * Java对象序列化和反序列化的工具方法
     */
    public class ObjectSerializable implements Serializable {
        private static final long serialVersionUID = 1L;
    
        /**
         * Java对象序列化
         */
        public void putData(String filePath, Object data) throws Exception {
            // 1. 检查该路径文件是否存在,不存在则创建
            File file = new File(filePath);
            createFileIfNotExists(file);
    
            // 2. 创建输出流,将数据写入文件
            ObjectOutputStream out = null;
            try {
                // 流创建
                out = new ObjectOutputStream(new FileOutputStream(file));
    
                // 序列化对象
                out.writeObject(data);
            } finally {
                // 关闭流
                if (null != out) {
                    out.close();
                }
            }
        }
    
        // 如果文件不存在,生成一个新文件
        public void createFileIfNotExists(File file) throws IOException {
            // 如果文件不存在,进行创建
            if (!file.exists()) {
                // 如果父目录不存在,创建父目录
                if (!file.getParentFile().exists()) {
                    file.getParentFile().mkdirs();
                }
    
                // 创建一个新的文件
                file.createNewFile();
            }
        }
    
        /**
         * Java对象反序列化
         */
        public Object getData(String filePath) throws Exception {
            // 如果文件不存在,抛个异常
            File file = new File(filePath);
            if (!file.exists()) {
                throw new FileNotFoundException(filePath);
            }
    
            // 创建输入流,从物件中读取数据
            ObjectInputStream in = null;
            Object object = null;
            try {
                // 流创建
                in = new ObjectInputStream(new FileInputStream(file));
    
                // 对象反序列化
                object = in.readObject();
            } finally {
                // 关闭流
                if (null != in) {
                    in.close();
                }
            }
    
            // 返回反序列化后的对象
            return object;
        }
    
    }
  • 相关阅读:
    Flutter
    Flutter
    Flutter
    使用Sublime Text 3作为React Native的开发IDE
    新建React Native项目步骤
    【一些容易忘记的node的npm命令】【收集】
    前端异步的一种方法库:axios
    【react】兄弟组件的通信方式,传统非redux
    【js】关于闭包和匿名函数
    【js】手机浏览器端唤起app,没有app就去下载app 的方法
  • 原文地址:https://www.cnblogs.com/zj0208/p/8477070.html
Copyright © 2020-2023  润新知