FileHashMap <k,v =“”>:重用相同的hashmap </k,>

时间:2013-07-09 15:11:29

标签: java file map hashmap

   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");
    }

这是输出为“否”..我想重用该文件,重用Hashmap ...我怎么能这样做..任何人都能解释一下吗?

1 个答案:

答案 0 :(得分:1)

这是你的问题:API令人困惑。它说“[a] FileHashMap默认是持久的”,但是零和一个arg构造函数(你正在使用的指定文件名的那个是一个arg)创建一个新的瞬态 FileHashMap - 也就是说,在FileHashMap关闭后删除该文件。两个arg构造函数采用文件名和int选项标志,但是没有“持久”的特定选项,所以你只需要确保标志不是“瞬态的”(确切地说,{{1 }})。

为了让它保存并打开文件,将flags & FileHashMap.TRANSIENT == 0作为标志传递给构造函数(除非你想要其他选项 - 阅读文档):

0

请注意,通用参数需要为new FileHashMap<Integer, String>(fileName, 0); 而不是Integer,正如评论所述。另请注意,您可能希望您的文件路径不是“/ myFile”,因为这很可能会给您一个权限被拒绝的错误,除非您以root身份运行,这可能不应该是。

相关问题