我正在尝试将Map存储到android的内部存储中。
我的代码:
private void saveFavorite(){
LinkedHashMap<String, LinkedList<MyCustomObject>> favorites = new LinkedHashMap<String, LinkedList<MyCustomObject>>();
try{
InputStream file = openFileInput(PATH);
BufferedInputStream buffer = new BufferedInputStream( file );
ObjectInput input = new ObjectInputStream ( buffer );
try{
Object o = input.readObject();
if(o instanceof LinkedHashMap<?, ?>)
favorites = (LinkedHashMap<String, LinkedList<MyCustomObject>>)o;
}
finally{
input.close();
}
}
catch(ClassNotFoundException ex){
}
catch(IOException ex){
}
String favoriteName = "asd";
favorites.put(favoriteName, myobject);
FileOutputStream fos;
try {
fos = openFileOutput(PATH, MODE_APPEND);
BufferedOutputStream buffer = new BufferedOutputStream( fos );
ObjectOutput output = new ObjectOutputStream( buffer );
try{
output.writeObject(favorites);
}finally{
output.close();
}
}catch(IOException ex){
}
}
MyCustomObject实现Serializable
调试时我没有看到任何问题。它似乎读取一个空地图,然后用一个值写入地图,但是当我再次读取它时,地图是空的。
请帮助。
更新 我找到了内部/ data / data / my_project_package_structure / files / 一个名为my var PATH的文件。每次调用我的保存方法时它的大小都在增长,所以我认为它写得很好,但我不知道我做错了什么。
答案 0 :(得分:0)
try {
**fos = openFileOutput(PATH, MODE_APPEND);**
BufferedOutputStream buffer = new BufferedOutputStream( fos );
应该是
**fos = openFileOutput(PATH, MODE_PRIVATE);**