从片段内的内部存储读取和写入文件

时间:2013-11-20 08:34:22

标签: java android android-fragments android-asynctask

我的应用有SplashScreenMainActivity。在MainActivity中,FrameLayout被片段取代。但这只是一个基本的理解,我不认为我的问题确实需要它。

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

该片段标出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。如何在片段中将模式设置为私有?

然后,当我想要读取文件时,它就像SplashScreen一样工作

inputStream = openFileInput ( filepath )

但是在片段中我得到了错误

The method openFileInput(String) is undefined for the type WeekFragment.MainAsyncTask

我究竟如何编写和读取片段中的文件?

2 个答案:

答案 0 :(得分:4)

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

所以在你的代码中使用像

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

答案 1 :(得分:0)

这在片段中对我有用

//reading text from the file
FileInputStream fileIn = getActivity().openFileInput("FragmentFile.txt");

//write text to file
try {
FileOutputStream fileout = getActivity().openFileOutput("FragmentFile.txt", MODE_PRIVATE);
                        OutputStreamWriter outputWriter = new OutputStreamWriter(fileout);
                        outputWriter.write(response.toString());
                        outputWriter.close();
                    } catch (Exception e) {
                        e.printStackTrace();
}}