簡體   English   中英

從內部存儲讀取(反序列化)

[英]Reading from internal storage (deserialization)

我正在使用以下方法從內部存儲讀取:

private void deserialize(ArrayList<Alias>arrayList) {
    try {
        FileInputStream fis = openFileInput(filename);
        ObjectInputStream ois = new ObjectInputStream(fis);
        arrayList = (ArrayList<Alias>)ois.readObject();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
}

它將文件“文件名”的內容讀取到“ arrayList”。

“序列化”方法如下:

void serialize(ArrayList<Alias>arrayList) {
    FileOutputStream fos;
    try {
        fos = openFileOutput(filename, Context.MODE_PRIVATE);
        ObjectOutputStream oos = new ObjectOutputStream(fos);
        oos.writeObject(arrayList);
        oos.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

問題是,每當我再次運行程序時,“ arrayList”為空。 所以我想我以錯誤的輸入模式打開文件。

我的目標是首先從文件中獲取數組,然后在應用程序中對其進行修改,然后將修改后的數組寫回到文件中。

有人可以幫我解決我的問題嗎?

謝謝!

您可以張貼您的源代碼嗎? 我認為您用來解析文件內容的方式會出現問題。

在這里閱讀:

Android ObjectInputStream文檔

我讀到方法readObject()會讀取下一個對象...這是必須迭代的對象:

MediaLibrary obj = null;
while ((obj = (MediaLibrary)objIn.readObject()) != null) {
    libraryFromDisk.add(obj);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM