使用Kryo工具将对象序列化

关于使用Kryo工具将对象序列化并且存入文件

在开发中对于缓存中的数据,将数据进行序列化报存下来可以使用Kryo工具类可以很轻松达到效果,话不多说直接上代码:

将map对象序列存入文件

<dependency>
    <groupId>com.esotericsoftware</groupId>
    <artifactId>kryo</artifactId>
    <version>4.0.2</version> <!-- 请根据需要使用最新版本 -->
</dependency>
  1. Map对象序列化存入压缩文件和普通文件并且反序列化
  2. //序列化map对象存入压缩文件中
 //序列化map对象存入压缩文件
 public static <K, V> void serializeMapGzipFile(Map<K, V> map, String fileName) {
        try {
            Kryo kryo = new Kryo();
            GZIPOutputStream gzipOutputStream = new GZIPOutputStream(new FileOutputStream(fileName));
            Output output = new Output(gzipOutputStream);
            kryo.writeObject(output, map);
            output.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //反序列化map压缩对象
    public static <K, V> Map<K, V> deserializeMapGzipFile(String fileName) {
        try {
            Kryo kryo = new Kryo();
            GZIPInputStream gzipInputStream = new GZIPInputStream(new FileInputStream(fileName));
            Input input = new Input(gzipInputStream);
            Map<K, V> map = kryo.readObject(input, HashMap.class);
            input.close();
            return map;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    //序列化map对象存入普通文件
    public static <K, V> void serializeMapFile(Map<K, V> map, String fileName) {
        try {
            Kryo kryo = new Kryo();
            Output output = new Output(new FileOutputStream(fileName));
            kryo.writeObject(output, map);
            output.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //反序列化map对象
    public static <K, V> Map<K, V> deserializeMapFile(String fileName) {
        try {
            Kryo kryo = new Kryo();
            Input input = new Input(new FileInputStream(fileName));
            Map<K, V> map = kryo.readObject(input, HashMap.class);
            input.close();
            return map;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

3.Set对象存入压缩文件和普通文件并且反序列

//反序列化set对象存入压缩文件
public static <T> void serializeSetGzipFile(Set<T> set, String fileName) {
    try {
        Kryo kryo = new Kryo();
        GZIPOutputStream gzipOutputStream = new GZIPOutputStream(new FileOutputStream(fileName));
        Output output = new Output(gzipOutputStream);
        kryo.writeObject(output, set);
        output.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

//反序列化set压缩对象
public static <T> Set<T> deserializeSetGzipFile(String fileName) {
    try {
        Kryo kryo = new Kryo();
        GZIPInputStream gzipInputStream = new GZIPInputStream(new FileInputStream(fileName));
        Input input = new Input(gzipInputStream);
        Set<T> set = kryo.readObject(input, HashSet.class);
        input.close();
        return set;
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

//反序列化set对象存入普通文件
public static <T> void serializeSetFile(Set<T> set, String fileName) {
    try {
        Kryo kryo = new Kryo();
        FileOutputStream fileOutputStream = new FileOutputStream(fileName);
        Output output = new Output(fileOutputStream);
        kryo.writeObject(output, set);
        output.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

//反序列化set压缩对象
public static <T> Set<T> deserializeSetFile(String fileName) {
    try {
        Kryo kryo = new Kryo();
        FileInputStream fileInputStream = new FileInputStream(fileName);
        Input input = new Input(fileInputStream);
        Set<T> set = kryo.readObject(input, HashSet.class);
        input.close();
        return set;
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值