Java:从磁盘写入/读取 map

标签 java serialization collections file-io

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

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

我一直在尝试(未成功)对象输入/输出流。我需要使 Object 类可序列化吗?

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

编辑:好吧,我还是觉得很蠢,我是从一张 map 上写的,读到另一张 map 上,然后比较它们来检查我的结果。显然我把它们比较错了。叹息。

最佳答案

如果您不是特别关心 Object,您只需要 String,String 的键值对,那么我建议您使用 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);

关于Java:从磁盘写入/读取 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4738162/

相关文章:

java - 为什么java中的HashMap内部使用数组来存储Entry对象而不是ArrayList?

java - 如何模拟TCP层?

java - 如何从字符串变量中获取小时和分钟?

java - 如何在 MacOS 上使用 Java(使用 JNA)获取前景窗口/进程?

java - @JsonFormat DEFAULT_TIMEZONE 似乎不起作用

C# 序列化失败 - 解决方法?

c# - 通过 MVC Controller 返回序列化为 JSON 的大型集合

java - 如何旋转列表,以便从列表中选择的项目始终位于 ListView 中的中间位置

java - 在 spring Roo > 1.1.5 中找不到 RooEntity 注释

java - 执行 RPC 时的 GWT 序列化问题