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 ...我怎么能这样做..任何人都能解释一下吗?
答案 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身份运行,这可能不应该是。