Хранение данных на SD-карте в Android

Используя страницу хранения данных в документации, я попытался сохранить некоторые данные на SD-карту. Это мой код:

    // Path to write files to
    String path = Environment.getExternalStorageDirectory().getAbsolutePath() +
                  "/Android/data/"+ctxt.getString(R.string.package_name)+"/files/";
    String fname = "mytest.txt";

    // Current state of the external media
    String extState = Environment.getExternalStorageState();

    // External media can be written onto
    if (extState.equals(Environment.MEDIA_MOUNTED))
    {
        try {
            // Make sure the path exists
            boolean exists = (new File(path)).exists();  
            if (!exists){ new File(path).mkdirs(); }  

            // Open output stream
            FileOutputStream fOut = new FileOutputStream(path + fname);

            fOut.write("Test".getBytes());

            // Close output stream
            fOut.flush();
            fOut.close();

        } catch (IOException ioe) {
            ioe.printStackTrace();
        }

Когда я создаю новый FileOutputStream, я получаю исключение FileNotFound. Я также заметил, что "mkdirs()" не создает каталог.

Может ли кто-нибудь сказать мне, что я делаю неправильно?

Я тестирую AVD с SD-картой на 2 ГБ и «hw.sdCard: да», проводник файлов DDMS в Eclipse сообщает мне, что единственный каталог на SD-карте - «LOST.DIR».


person BBoom    schedule 24.05.2010    source источник


Ответы (2)


Дали ли вы своему приложению разрешение на запись на SD-карту< /а>?

Вы делаете это, добавляя следующее в свой AndroidManifest.xml:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
person Dave Webb    schedule 24.05.2010
comment
Это простые вещи, которые имеют большое значение... Спасибо! знак равно - person BBoom; 25.05.2010

Перед чтением или записью на SD-карту не забудьте проверить, смонтирована SD-карта или нет?

Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
person Shahul3D    schedule 26.06.2012