使用 Context 在 android 的内部存储器上保存文件

Saving a file on the internal storage of android using Context

我正在尝试将一个随机的 hello world 文件保存到我的 android 的内部存储器中。当我 运行 我的应用程序时,它就停止了。

代码:

public void saveDataOnDevice(String toWrite, String filename) {
    Context ctx = null;
    try {
        FileOutputStream fos = ctx.openFileOutput(filename, Context.MODE_PRIVATE);
        fos.write(toWrite.getBytes());
        fos.close();
    }
    catch (IOException ioe) {
        ioe.printStackTrace();
    }
}

另外一个问题是,Context是什么意思。我读了很多关于这个的文章 here,但我还是不明白。

首先...您的上下文始终为空:Context ctx = null;,因此您无法以任何方式使其工作。

为了简化:Context,在一个简单的应用程序中,将成为您的 MainActivity。在更大的应用程序中,您可以有多个上下文,答案会更复杂。

回到你的代码,如果放在你的MainActivity里面 context 会是 this:

public void saveDataOnDevice(String toWrite, String filename) {
    try {
        FileOutputStream fos = this.openFileOutput(filename, Context.MODE_PRIVATE);
        //                     ^ --> refers to main class, in this case your MainActivity
        fos.write(toWrite.getBytes());
        fos.close();
    }
    catch (IOException ioe) {
        ioe.printStackTrace();
    }
}

注意:如果 MainActivity 中没有此方法,则必须以某种方式将 Activity 的引用传递给该方法或 class(属性、方法参数等...等...).

查看 Android Developers::saving files 了解更多信息。