0

我正在寻找在 android 中保存/加载一个非常简单的应用程序。想法是检查 onCreate() 方法中是否存在文件,以及它是否确实在 onCreate 中加载了设置。这是执行此操作的正确功能吗?保存在 onPause() 函数中完成。

我这样做的方式是通过 FileOutputStream 和 FileInputStream。

但是我的代码看起来如何呢?目前我有这个:

if (new File(FILENAME).isFile()) {
        FileInputStream fis = null;
        try {
            fis = openFileInput(FILENAME);
            fis.read();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        numOfEpisode = Integer.parseInt(fis.toString());
        numOfSeason = Integer.parseInt(fis.toString());
    }

忽略我还没有处理异常的事实,因为我知道测试时文件会在那里。

protected void onPause() {
    try {
        FileOutputStream fos = openFileOutput(FILENAME,
                Context.MODE_PRIVATE);
        fos.write(numOfEpisode);
        fos.write(numOfSeason);
        fos.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

当我关闭应用程序时(调用 onPause() 时),该应用程序当前给我一个错误。谁能指出我为什么?

另外我怎么知道 FileOutputStream.write() 以什么方式写我的语句?这是先进先出还是后进先出?

4

2 回答 2

2

我会为此使用 SharedPreferences,因为它更容易做到,并且专门设计用于从设备存储和检索少量信息。查看如何在 Android 中使用 SharedPreferences 来存储、获取和编辑值以了解这是如何完成的。

您将读取 onCreate 中的值并存储它们。当您 onPause 时,您会将它们写出到 SharedPreferences。

于 2013-02-18T19:07:57.303 回答
0

试试这个代码:

File Gdir = new File(Environment.getExternalStorageDirectory()
                    .getPath() + "/NewFolder/");
            // have the object build the directory structure, if needed.

            if (!Gdir.exists()) {
                Gdir.mkdirs();
            }
                File outputFile = new File(Gdir, "file.txt");
                // now attach the OutputStream to the file object, instead of a
                // String representation
                try {                   
                    FileWriter mod = new FileWriter(
                            outputFile);
                    mod.write(numOfEpisode);
                    mod.write(numOfSeason);
                    mod.flush();
                    mod.close();

                } catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                Toast.makeText(getApplicationContext(), "File saved in: "+outputFile, Toast.LENGTH_LONG).show();
于 2013-02-18T19:04:25.223 回答