将ArrayList <string>保存到内部存储中

时间:2017-07-13 07:48:57

标签: android storage

我尝试在内部存储上的txt文件中保存String的ArrayList。 (出于某种原因,我无法使用SharedPreferences)

但是,我不知道为什么它不起作用。如果我在onStop()中读取文件,我可以看到我想要保存的字符串,但是如果我退出应用程序并尝试在onCreate()之后读取该文件为空。但是,如果我退出应用程序并转到/data/data/myapp/file,我可以看到文件HiddenFormula.txt,其中包含我想要的字符串。

有什么想法吗?

以下是我用来保存和读取文件的代码:

public void saveHiddenFormulas(Context context, ArrayList<String> hiddenFormulas) {
    try {
        FileOutputStream fileOutputStream = context.openFileOutput("HiddenFormulas.txt", Context.MODE_PRIVATE);
        ObjectOutputStream out = new ObjectOutputStream(fileOutputStream);
        out.writeObject(hiddenFormulas);
        out.close();
        fileOutputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

private static ArrayList<String> readSavedHiddenFormulas(Context context) {
    ArrayList<String> savedArrayList = null;
    try {
        FileInputStream inputStream = context.openFileInput("HiddenFormulas.txt");
        ObjectInputStream in = new ObjectInputStream(inputStream);
        savedArrayList = (ArrayList<String>) in.readObject();
        in.close();
        inputStream.close();

    } catch (IOException | ClassNotFoundException e) {
        e.printStackTrace();
    }

    return savedArrayList;
}

1 个答案:

答案 0 :(得分:0)

我们可以看到堆栈跟踪或您调用readSavedHiddenFormulas的位置吗?当我得到更多信息时,我会编辑我的答案。

此链接可以为您提供帮助:Reading from a textfile in android studio

查看答案。