0

次のようにクラス変数を作成しました

private boolean xyz = false;

その後、いくつかのことを行い、ブール変数の値を に変更するメソッドを呼び出していますtrue

次にコードを再実行すると、ブール値は true のままではなく、false に戻ります。

プログラムを閉じて後でもう一度実行しても、そのままにしておきたいです。

4

2 に答える 2

6

プログラムを閉じて後でもう一度実行しても、そのままにしておきたいです。

つまり、どこかに永続化する必要があります。

オプションは次のとおりです。

  • オンラインのどこか
  • データベース
  • PreferencesAPIによるユーザー設定
  • 既知の場所にある単純なファイル

基本的に、データをどこかに書き出し、起動時に読み戻す必要があります。これ以上の文脈がなければ、これ以上具体的なアドバイスをすることは困難です。

于 2012-07-21T20:31:46.643 に答える
0

プログラムを終了するときは、以下を使用して、変数を自分の場所、できればプログラムのローカル ディレクトリにあるファイルに保存します。これをシリアル化と呼びます。

try
      {
         FileOutputStream fileOut = new FileOutputStream("xyz.ser");//this saves to the directory where your program runs in
         ObjectOutputStream out = new ObjectOutputStream(fileOut);
         out.writeObject(xyz);
         out.close();
          fileOut.close();
      }catch(IOException i)
      {
          i.printStackTrace();
      }

次に、プログラムを起動すると、以下のコードで読み返すことができます。これを逆シリアル化と呼びます。

try
         {
            FileInputStream fileIn = new FileInputStream("xyz.ser");
            ObjectInputStream in = new ObjectInputStream(fileIn);
            xyz = (boolean) in.readObject();
            in.close();
            fileIn.close();
        }catch(IOException i)
        {// you are here if xyz.ser does not exist
            i.printStackTrace();
            return;
        }

また、ファイルが以前に作成されたかどうかを確認することもできます。それ以外の場合は、IOException がキャッチされます。ファイル名が xyz.ser の File オブジェクトを作成し、exists() を呼び出すことで実行できます。

于 2012-07-21T20:51:03.857 に答える