gpt4 book ai didi

java - 在文件中写入和读取 ListMultimap

转载 作者:行者123 更新时间:2023-12-02 06:53:34 24 4
gpt4 key购买 nike

我尝试使用PropertiesListMultimap写入文件,但这似乎不可能,请参阅问题Writing and reading ListMultimap to file using Properties

接下来,如果使用Properties来存储ListMultimap不是正确的方法,我们如何将ListMultimap存储到文件中?我们如何从文件中读回?

例如假设我有:

ListMultimap<Object, Object> index = ArrayListMultimap.create();

如何编写方法将此 ListMultimap 写入文件并从文件读回:

writeToFile(ListMultimap multiMap, String filePath){
//??
}

ListMultimap readFromFile(String filePath){
ListMultimap multiMap;
//multiMap = read from file
return multiMap;
}

最佳答案

您需要决定如何表示文件中的每个对象。例如,如果您的 ListMultimap 包含 String,您可以简单地编写字符串值,但如果您正在处理复杂的对象,则需要将这些对象的表示形式生成为byte[],如果您想使用Properties,则应该对其进行 Base64 编码。

基本的读取方法应该是这样的:

public ListMultimap<Object, Object> read(InputStream in) throws IOException
{
ListMultimap<Object, Object> index = ArrayListMultimap.create();

Properties properties = new Properties();
properties.load(in);

for (Object serializedKey : properties.keySet())
{
String deserializedKey = deserialize(serializedKey);
String values = properties.get(serializedKey);

for (String value : values.split(","))
{
index.put(deserializedKey, deserialize(value));
}
}

return index;
}

写入方法是这样的:

public void write(ListMultimap<Object, Object> index, OutputStream out) throws IOException
{
Properties properties = new Properties();

for (Object key : index.keySet())
{
StringBuilder values = new StringBuilder();

for (Object value = index.get(key))
{
values.append(serailize(value)).append(",");
}

properties.setProperty(serailize(key), values.subString(0, values.length - 1));
}

properties.store(out, "saving");
}

此示例使用了 serializedeserialize 方法,您需要根据需要定义这些方法,但签名为:

public String serialize(Object object)

public Object deserialize(String s)

关于java - 在文件中写入和读取 ListMultimap<Object, Object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17702327/

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