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() がステートメントを書き込む方法をどのように知ることができますか? これは FIFO ですか、それとも LIFO ですか?

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 に答える