0

アプリケーションの起動時に保存してロードする必要のあるデータが数十個あります。それらは、int、String、long、配列データ型です。これを行うには非常に多くの方法があるように思われるので、私は混乱しています。それぞれのバリエーションには異なる方法があるようです。一部のデータは、アプリの実行中に変更されます。私は次のことをしているとしましょう

  int WifiOn="1";
  private long Lasttime="00/00/00";
  private String UserId="12345678";
  private String URLResource[]= {"A","B","C");
  //I open file...
  FileOutputStream fos = openFileOutput("userPref.dat", Context.MODE_PRIVATE);

次に、4つのデータ型を使用して、それらを内部ストレージに保存するにはどうすればよいですか?そして、それらをロードする方法は何ですか?

4

3 に答える 3

1

SharedPreferencesとSQLite databases、Dheeresh Singhが言及していることとは別に、Serialization単純なデータ型のみを使用するため、使用することもできます。

シリアル化を使用してファイルにデータを書き込む方法:

//create an ObjectOutputStream around your (file) OutputStream
ObjectOutputStream oos = new ObjectOutputStream(fos);
//The OOS has methods like writeFloat(), writeInt() etc.
oos.writeInt(myInt);
oos.writeInt(myOtherInt);
//You can also write objects that implements Serializable:
oos.writeObject(myIntArray);
//Finally close the stream:
oos.flush();
oos.close();

シリアル化を使用してファイルからデータを読み取る方法:

//Create an ObjectInputStream around your (file) InputStream
ObjectInputStream ois = new ObjectInputStream(fis);
//This stream has read-methods corresponding to the write-methods in the OOS, the objects are read in the order they were written:
myInt = ois.readInt();
myOtherInt = ois.readInt();
//The readObject() returns an Object, but you know it is the same type that you wrote, so just cast it and ignore any warnings:
myIntArray = (int[]) ois.readObject();
//As always, close the stream:
ois.close();

ちなみに、In/OutStreamをBufferedInput/OutputStreamでラップして、追加の読み取り/書き込みパフォーマンスを絞り出すことを検討してください。

于 2012-06-26T07:48:27.057 に答える
1

idデータは制限されshared preferenceているので使用でき、データが多い場合は使用できます SQLite database

 dozen pieces of data

あなたのニーズにも簡単で効率的なSQLiteデータベースを使用することをお勧めします

その使用方法についてはリンクを参照してください

http://developer.android.com/guide/topics/data/data-storage.htmlによる

データストレージオプションは次のとおりです。

  • 共有設定

プライベートプリミティブデータをキーと値のペアで格納します。

  • 内部記憶装置

プライベートデータをデバイスのメモリに保存します。

  • 外部記憶装置

公開データを共有外部ストレージに保存します。

  • SQLiteデータベース

構造化データをプライベートデータベースに保存します。

  • ネットワーク接続

独自のネットワークサーバーを使用してWebにデータを保存します。

于 2012-06-26T07:33:11.733 に答える
1

すべてのデータがまったく同じ方法でフォーマットされている場合はJSON、おそらくを使用する必要があります。関数では、オブジェクトを作成してからファイルに書き込むことができます。

public bool writeToFile(int wifiOn, long lastTime, String userId, String [] urlResources) {
   JSONObject toStore = new JSONObject();
   FileOutputStream fos = openFileOutput("userPref.dat", Context.MODE_PRIVATE);

   toStore.put("wifiOn", wifiOn);
   toStore.put("lastTime", lastTime);
   toStore.put("userId", userId);
   toStore.put("urlResources", urlResources);

   try {
       fos.write(toStore.toString().getBytes());
       fos.close();
       return true;
   } catch (Exception e) {
       e.printStackTrace();
   }
   return false;
}
于 2012-06-26T07:40:28.980 に答える