Java:从磁盘写入/读取映射

2022-09-03 17:14:25

我有一个数据结构,我希望能够在关闭程序之前写入文件,然后从文件中读取以在下次应用程序启动时重新填充结构。

我的结构是.对象非常简单;对于成员变量,它有一个 String 和两个布尔类型的小型本机数组。这是一个非常简单的应用程序,我预计一次不会超过10-15对。HashMap<String, Object><key,value>

我一直在试验(不成功)对象输入/输出流。是否需要使对象类可序列化?

你能给我一些关于最好的方法的建议吗?我只需要朝着正确的方向前进。谢谢!

编辑:嗯,我仍然觉得很愚蠢,我从一张地图上写,然后读到另一张地图上,然后比较它们来检查我的结果。显然,我把它们比较错了。叹息。


答案 1

如果你不特别关心对象,你只需要字符串的键值对,那么我建议你去java.util.Properties。否则你去这里

        Map map = new HashMap();
        map.put("1",new Integer(1));
        map.put("2",new Integer(2));
        map.put("3",new Integer(3));
        FileOutputStream fos = new FileOutputStream("map.ser");
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(map);
        oos.close();

        FileInputStream fis = new FileInputStream("map.ser");
        ObjectInputStream ois = new ObjectInputStream(fis);
        Map anotherMap = (Map) ois.readObject();
        ois.close();

        System.out.println(anotherMap);

答案 2
Map m = new HashMap();
// let's use untyped and autoboxing just for example
m.put("One",1);
m.put("Two",2);

ObjectOutputStream oos = new ObjectOutputStream(
        new FileOutputStream("foo.ser")
);
oos.writeObject(m);
oos.flush();
oos.close();