不读取或写入内部存储android

时间:2011-07-15 17:14:16

标签: android data-storage

我正在尝试将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的文件。每次调用我的保存方法时它的大小都在增长,所以我认为它写得很好,但我不知道我做错了什么。

1 个答案:

答案 0 :(得分:0)

try {
    **fos = openFileOutput(PATH, MODE_APPEND);**
    BufferedOutputStream buffer = new BufferedOutputStream( fos );

应该是

    **fos = openFileOutput(PATH, MODE_PRIVATE);**