0

アンドロイドの内部/外部メモリにあるファイルのデータディクショナリを読み書きしたい。WP7では、辞書を直接保存するためにIsolatedStorageを使用していました。IOSでは、NSDictionaryをファイルに直接書き込むことができます。DataDictionaryをファイルに書き込む方法を教えてください。

注:Map変数にキーと値があります。このマップをファイルに直接保存する方法

4

2 に答える 2

3

次の理由であなたの言葉をデータベースに入れることをお勧めします


SQLiteを使用したAndroidでのDBルックアップは、最もせっかちなユーザーでも「十分に高速」(〜1ms)です。

大きなファイルをメモリに読み込むことは、Androidなどのメモリが制限された環境では危険な方法です。

「メモリ内」ではなく「インプレース」でファイルからエントリを読み取ろ
うとすると、SQLite
がすでに解決しているすべての問題を効果的に解決しようとします。

分散アプリケーションの.apkにデータベースを埋め込む[Android]

オブジェクトのシリアル化を検索すると、より詳細な例を見つけることができます

[編集1]

Map map = new HashMap();
map.put("1",new Integer(1));
map.put("2",new Integer(2));
map.put("3",new Integer(3));
FileOutputStream fos = new FileOutputStream("map.ser");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(map);
oos.close();

FileInputStream fis = new FileInputStream("map.ser");
ObjectInputStream ois = new ObjectInputStream(fis);
Map anotherMap = (Map) ois.readObject();
ois.close();

System.out.println(anotherMap);

[編集2]

try {

        File file = new File(getFilesDir() + "/map.ser");

        Map map = new HashMap();
        map.put("1", new Integer(1));
        map.put("2", new Integer(2));
        map.put("3", new Integer(3));
        Map anotherMap = null;

        if (!file.exists()) {
            FileOutputStream fos = new FileOutputStream(file);
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(map);
            oos.close();

            System.out.println("added");                
        } else {
            FileInputStream fis = new FileInputStream(file);
            ObjectInputStream ois = new ObjectInputStream(fis);
            anotherMap = (Map) ois.readObject();
            ois.close();

            System.out.println(anotherMap);
        }



    } catch (Exception e) {

    }

[編集3]

Iterator myVeryOwnIterator = meMap.keySet().iterator();
while(myVeryOwnIterator.hasNext()) {
    String key=(String)myVeryOwnIterator.next();
    String value=(String)meMap.get(key);

     // check for value

}
于 2013-01-08T10:23:02.000 に答える
0

SharedPreferenceslink )を使用することがあなたのユースケースに適しているかどうかはわかりません。

キーと値のペアを介して保存し、SharedPreferencesアプリケーションごとに複数持つことができます。両方ともStringオブジェクトとして格納されますが、組み込みメソッドを使用して、値を他のプリミティブに自動的にキャストできます。

Mark Murphyは、パターン(link )を使用してアクセスしやすくするために、ライブラリcwac-loaderexlink )を作成しました。これにより、IOをメインスレッドから遠ざけるために必要な作業の一部が相殺されます。SharedPreferencesLoader

于 2013-01-08T10:20:36.627 に答える