0
   FileHashMap<int, String> myMap = new FileHashMap<int, String>("/myFile");       
   myMap.put(1, "First");
   myMap.put(2, "Second");
   myMap.save();
   myMap.close();

根据我的理解,这段代码会将 Hashmap 文件保存到磁盘上......但是当我再次创建 FileHashMap 的对象时,如下所示:

    FileHashMap<int, String> myMap = new FileHashMap<int, String>("/myFile");       
    if(myMap.containsKey(1){
    System.out.println("Yes");
    }
    else{
    System.out.println("No");
    }

这给出的输出为“否”..我想重用文件,重用哈希图......我该怎么做......谁能解释一下?

4

1 回答 1

1

这是您的问题:API令人困惑。它说“[a] FileHashMap 在默认情况下是持久的”,但是零参数和一参数构造函数(您使用的指定文件名的构造函数是一参数)创建一个新的瞬态 FileHashMap- 即FileHashMap关闭后文件被删除。两个参数的构造函数采用文件名和int选项标志,但没有“持久”的特定选项,因此您只需确保该标志不是“瞬态”(准确地说,是flags & FileHashMap.TRANSIENT == 0)。

为了让它保存和打开文件,0作为标志传递给构造函数(除非你想要其他选项——阅读文档),如下所示:

new FileHashMap<Integer, String>(fileName, 0);

请注意,正如评论所述,通用参数必须是Integer而不是。int另请注意,您可能希望您的文件路径不是“/myFile”,因为这很可能会给您一个权限被拒绝的错误,除非您以 root 身份运行,而您可能不应该这样做。

于 2013-07-09T15:53:36.397 回答