0

クラスのオブジェクトをアプリケーションのファイルに保存しましたが、電話がシャットダウンすると、ファイルはどうなりますか?私は、ファイルが失われると思います。電話を再起動した後、ファイルからnull値(クラスオブジェクトのいくつかの変数に保存されている)を取得するためです。電話をシャットダウンしてもファイルが失われないようにするにはどうすればよいですか。出来ますか?

4

3 に答える 3

1

このコードを試すことができます:

String filename = "filename.txt";
File file = new File(Environment.getExternalStorageDirectory(), filename);
FileOutputStream fos;
byte[] data = new String("data to write to file").getBytes();
try {
    fos = new FileOutputStream(file);
    fos.write(data);
    fos.flush();
    fos.close();
} catch (FileNotFoundException e) {
    // handle exception
} catch (IOException e) {
    // handle exception
}

そして、マニフェストファイルで許可を宣言していることを確認してください

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
于 2012-12-25T13:03:13.077 に答える
0

環境設定を使用することをお勧めします。外部ストレージへの書き込みは一般的に悪い考えです。SharedPreferencesを使用してオブジェクトの状態を保存し、保存したデータを使用してそのオブジェクトを再度インスタンス化します。

SharedPreferences API

于 2012-12-26T02:16:01.757 に答える
0

まず、次のようにクラスをシリアル化します。

public class MyStore implements Serializable {
    //this serialVersionUID will automatically generate
    private static final long serialVersionUID = 3487640153579137276L;
......
......
}

次に、次のようにオブジェクトを内部メモリに保存しました。

File path = new File(getActivity().getFilesDir(), foldar_name);
path.mkdirs();
File file = new File(path,file_name);
file.createNewFile();

MyStore myStore = new MyStore();                            
myStore.setData(my_data);

FileOutputStream fout = new FileOutputStream(file);
ObjectOutputStream os = new ObjectOutputStream(fout);
os.writeObject(myStore);
os.flush();
os.close();
于 2013-04-07T22:10:14.087 に答える