我有一个HashMap
我想坚持并快速访问。我使用 Kryo 序列化对象
Kryo kryo = new Kryo();
MapSerializer serializer = new MapSerializer();
kryo.register(Location.class);
kryo.register(HashMap.class, serializer);
Output output = new Output(new FileOutputStream("src/main/resources/locations50K.kryo"));
kryo.writeObject(output, locationMap);
output.close();
我可以成功反序列化
Input input = new Input(new FileInputStream("src/main/resources/locations50K.kryo"));
Map<String, Location> locationMap;
locationMap = kryo.readObject(input, HashMap.class);
input.close();
log.info(locationMap.size());
log.info 显示我的地图中有 231,045 个条目。
现在,我想在编译 *-jar-with-dependencies.jar 后访问我的 .kryo 文件(我正在使用 Maven)。因此,我使用的不是FileInputStream
读取自 的 asrc/main/resources/
MyClass.class.getResourceAsStream
InputStream isr = MyClass.class.getResourceAsStream("/locations50K.kryo");
if(isr == null)
log.error("null input");
Input input = new Input(isr);
locationMap = kryo.readObject(input, HashMap.class);
input.close();
log.info(locationMap.size());
log.error 永远不会显示,并且 log.info 说我的地图中有 0 个条目。为什么?isr
is not null 所以它正在读取一些东西,Kryo 似乎无法反序列化它并且不提供任何错误。