我遇到了一个大问题。我想将 HashMap(我将其称为“map”或“hm”)保存到运行应用程序的 android 设备上的文件中。我确实想将其保存在内部存储中。
我知道这样的问题以前被问过 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' ......不知道该怎么办。