2010-05-24 5 views
7

Используя data-storage page in the docs, я попытался сохранить некоторые данные на SD-карте. Это мой код:Хранение данных на SD-карте в Android

// 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 с 2-гигабайтной SD-картой и «hw.sdCard: yes», Проводник DDMS в Eclipse говорит мне, что единственным каталогом на SD-карте является «LOST.DIR».

ответ

7

Вы даете свой application permission to write to the SD Card?

Вы можете сделать это adding the following to your AndroidManifest.xml:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
+0

Его простые вещи, которые делают большую разницу ... Спасибо! =) – BBoom

+0

Ahh большое вам спасибо! Проклятый манифест всегда меня достает. – idolize

2

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

Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) 
Смежные вопросы