您需要决定如何表示文件中的每个对象。例如,如果您ListMultimap
包含String
的 s 您可以简单地编写字符串值,但如果您正在处理复杂的对象,则需要将这些对象的表示形式生成为 a 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");
}
此示例使用您需要根据您的要求定义的方法,但签名是serialize
:deserialize
public String serialize(Object object)
和
public Object deserialize(String s)