gpt4 book ai didi

java - Hazelcast ReplicatedMap 序列化到文件中

转载 作者:太空宇宙 更新时间:2023-11-04 12:58:18 25 4
gpt4 key购买 nike

我正在尝试将 ReplicatedMap (hazelcast) 保存到文件系统并稍后加载,但这似乎不可能。有什么办法可以实现这一点吗?

详情:

Map map = HazelcastInstance.getReplicatedMap("map");
File file = new File("hazelcastmap");
FileOutputStream f = new FileOutputStream(file);
ObjectOutputStream s = new ObjectOutputStream(f);
s.writeObject(map);
s.close();

抛出的错误是:

java.io.NotSerializableException: com.hazelcast.replicatedmap.impl.ReplicatedMapProxy
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)

有什么方法可以读取ReplicatedMap并将其写入文件。

谢谢大家。

最佳答案

由于 ReplicatedMap 是一个用于保留对象引用的结构,因此您必须编写自己的代码来将 ReplicatedMap 的信息序列化到文件中。下面是一个以(非常)老式的方式执行此操作的粗略示例

private static void writeToFile(){

// Retrieve your hazelcast reference
// hazelcast = ...

Map<Object, Object> map = hazelcast.getReplicatedMap("map");

FileOutputStream fos = new FileOutputStream("/tmp/out.data");

ByteArrayOutputStream arrayOut = new ByteArrayOutputStream();
DataOutputStream dataOut = new DataOutputStream(arrayOut);

dataOut.writeInt(map.size());

for (Entry<Object, Object> entry : map.entrySet()){

dataOut.writeUTF(entry.getKey().toString());
dataOut.writeUTF(entry.getValue().toString());
}

fos.write(arrayOut.toByteArray());

//..close streams
}

private static void readFromFile() throws Exception{

FileInputStream fis = new FileInputStream("/tmp/out.data");
DataInputStream dataIn = new DataInputStream(fis);

Map<Object, Object> map = hazelcast.getReplicatedMap("map");

int size = dataIn.readInt();

for (int i = 0; i < size; i++){

String key = dataIn.readUTF();
String value = dataIn.readUTF();

//Convert the String 'value' into your Object
//put the pair key value into the map
}

//..close streams
}

关于java - Hazelcast ReplicatedMap 序列化到文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35179525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com