java - 从 fragment 中的内部存储读取和写入文件

标签 java android android-fragments android-asynctask

我的应用有一个 SplashScreen 和一个 MainActivity。在 MainActivity 中,FrameLayout 被 fragment 替换。但这只是一个基本的理解,我不认为我的问题真的需要它。

在我的 SplashScreen 中,我正在检查内部存储中是否存在文件。如果是这样,它就会被读出。如果没有,它会从互联网上下载。到目前为止,一切都很好。现在,当用户在 MainActivity 中时,他有不同的选择。根据该选项,将打开一个 fragment 并显示数据。这个数据不一样。所以现在我想在 SplashScreen 中做同样的事情。检查文件是否存在。如果是,请读出,否则从 Internet 下载。我遇到的问题是,似乎无法通过 fragment 进行读写。对吗?

该 fragment 为 AsyncTask 加注星标,应该在其中进行下载。

这是我在 fragment 中写入文件的代码

private void writeToFile(String data, String filename) {
    try {
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(openFileOutput( filename, MODE_PRIVATE));
        outputStreamWriter.write(data);
        outputStreamWriter.close();
    }
    catch (IOException e) {
        Log.e("Exception", "File write failed: " + e.toString());
    } 
}

但我遇到的问题是 MODE_PRIVATE - 我遇到的错误是 MODE_PRIVATE cannot be resolved to a variable 。如何在 fragment 中将模式设置为私有(private)?

然后,当我想读取一个文件时,它会像那样在 SplashScreen 中工作

inputStream = openFileInput ( 文件路径 )

但是在 fragment 中我得到了错误

未为类型 WeekFragment.MainAsyncTask 定义方法 openFileInput(String)

我究竟如何在 fragment 中写入和读取文件?

最佳答案

MODE_PRIVATEContext 的常量类(class)。因此,您可以使用 Context.MODE_PRIVATE 从任何地方访问它。

所以在你的代码中使用 like

OutputStreamWriter outputStreamWriter = new OutputStreamWriter(getActivity().openFileOutput( filename, Context.MODE_PRIVATE));

关于java - 从 fragment 中的内部存储读取和写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20090900/

相关文章:

java - 如何编写通用方法在数组中插入元素?

java - 加载 fragment 时应用程序崩溃

java - 无法在 spring mvc 中加载默认索引页面

java - 继承属性访问

android - android 工具栏下的导航 View

java - Parse.com - 重新安装应用程序后重复推送

java - Android 将值从子 fragment 传递回父 fragment

android - 在具有透明背景的 fragment 上呈现 fragment

java - 这是在 Java 中进行转换的更好方法

使用priorityQueue的java heapify方法