我遇到了一個主要問題。我想將一個HashMap(我稱它爲'map'或'hm')保存到應用程序運行的android設備上的一個文件中。我確實想將它保存在內部存儲器上。如何將HashMap保存到文件並加載它
我知道這樣的問題之前曾被問過像100,我嘗試了其中的25個,但他們都沒有工作。
我得到了3個類,一個主類擴展了'Activity'和另外兩個類,一個叫'util'。我想寫兩種方法來保存和加載HashMap,並且這兩種方法都應該在'util'類中。在主類中,我寫了幾種方法來加載HashMap,在其中加入一些東西,並再次保存。
直到這裏,它不應該很難解決我的問題,但我想在除了主類以外的其他類中使用「保存」和「加載」方法。
我不知道如何獲取其他類中的Context對象作爲主類,所以我不知道如何調用openFileOutput()
方法。
總結:我想保存並加載一個HashMap到我想要在內部存儲上創建的文件。我使用的方法應該位於'util'類中,並且應該可以用於所有其他類,這是靜態方式的首選。我嘗試了許多不同的可能性,但我總是得到'FileNotFoundException'。我希望你能幫助我。
一些我所用的方法:
try {
FileOutputStream fos = c.openFileOutput(s, Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(hm);
oos.flush();
oos.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
在這個方法我都用的背景下,我不知道如何得到它的其他類。我也得到一個「FileNotFoundException異常」 ......
String file = The path where my file should be located (I don't know how it should be given, but "data/data/[packagename]/[file]" does not work)
try {
FileOutputStream fos = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(hm);
oos.flush();
oos.close();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
這種方法也不管用,我真的不知道我有哪些異常。
最後:如果你想幫助我,請描述如何獲得你使用的每個對象(好吧,除了基本的東西,比如字符串等),並粘貼你的整個解決方案。如果之前詢問過這個問題,我真的很抱歉,我找不到它。
編輯
我試圖用 'this.getApplicationContext()。getFilesDir()' 方法,但仍然得到一個 'FileNotFoundException異常' ......不知道該怎麼辦。
「_I真的不知道我該例外..._」如果你要我們幫助你,這是我們所需要的那種信息...只是運行編碼並複製/粘貼堆棧跟蹤。這是你至少可以做的...... – jlordo
你的'Map'包含哪些類型? 'Hashmap'? –
nattyddubbs
是的,字符串和整數。有時候是我的Enum類的一種類型。將不同類型的對象放在一個HashMap中是否存在問題(如果你不知道如何說)將這些東西放在那些'>'中? – Enagon