package com.skyversation.poiaddr.util;

import com.skyversation.poiaddr.entity.SjArrDzbzhSjWcbryDzxx;

import java.io.*;
import java.util.List;

public class SerializationUtils {

    /**
     * 将 List<T> 序列化并保存到本地文件
     * @param list 要序列化的 List
     * @param filePath 保存文件的路径
     * @param <T> 泛型类型
     */
    public static <T extends Serializable> void serialize(List<T> list, String filePath) {
        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filePath))) {
            oos.writeObject(list);
            System.out.println("数据已成功序列化并保存到 " + filePath);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 从本地文件中反序列化读取 List<T>
     * @param filePath 读取文件的路径
     * @param <T> 泛型类型
     * @return 反序列化后的 List
     */
    @SuppressWarnings("unchecked")
    public static <T extends Serializable> List<T> deserialize(String filePath) {
        List<T> list = null;
        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filePath))) {
            list = (List<T>) ois.readObject();
            System.out.println("数据已成功从 " + filePath + " 反序列化");
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
        return list;
    }

    public static void main(String[] args) throws IOException {
        List<SjArrDzbzhSjWcbryDzxx> listData = deserialize("output/testDataBase_all.ser");
//      将序列化的文件转储为xlsx文件
        ExcelReaderUtils.writeClassToExcel(listData, "output/allData.xlsx");
    }
}