android: не может записывать в файлы dir, но может в dir пакета - PullRequest
1 голос
/ 06 июля 2010

Я пытаюсь сохранить объект в файл, но файл не появляется на устройстве, и я тоже не получаю исключения.

public static void save(Context ctx) {
    Log.i("App serialization", "Saving to settings.ser: " + ctx.getFileStreamPath("settings.ser"));
    FileOutputStream fos = null;
    ObjectOutputStream out = null;
    try {
        fos = ctx.openFileOutput("settings.ser", Context.MODE_PRIVATE);
        out = new ObjectOutputStream(fos);
        out.writeObject(ApplicationData.settings);
        out.flush();
        out.close();
        //fos.close();
        Log.i("App serialization", "Finished writing to settings.ser");
    }
    catch(IOException ex) {
        ex.printStackTrace();
        Log.e("App serialization", "Could not save to settings.ser");
    }
}

Если вместо этого я использую:

try {
        fos = new FileOutputStream("/data/data/APP_PACKAGE/settings.ser");
        out = new ObjectOutputStream(fos);

Это работает, и я вижу, что файл был создан на устройстве.

Но это не круто, и это не способ сделать это, потому что структура каталогов может измениться вбудущее.

1 Ответ

0 голосов
/ 06 июля 2010

Во-первых, избавьтесь от вызова printStackTrace() и передайте объект IOException вместо android.util.Log (например, третий параметр в вашем вызове e()).

Второй, /data/data/APP_PACKAGE/settings.serэто не то место, где ваш файл окажется в вашем первом списке кода.Он перейдет в /data/data/APP_PACKAGE/files/settings.ser.

В-третьих, /data/data/APP_PACKAGE/settings.ser может быть неверным путем на Android 2.2, когда ваше приложение установлено на SD.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...