关于使用Kryo工具将对象序列化并且存入文件
在开发中对于缓存中的数据,将数据进行序列化报存下来可以使用Kryo工具类可以很轻松达到效果,话不多说直接上代码:
将map对象序列存入文件
<dependency>
<groupId>com.esotericsoftware</groupId>
<artifactId>kryo</artifactId>
<version>4.0.2</version> <!-- 请根据需要使用最新版本 -->
</dependency>
- Map对象序列化存入压缩文件和普通文件并且反序列化
- //序列化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;
}