2015-01-06 5 views
0

Мне кажется это кажется прекрасным,Почему я получаю FileNotFoundException?

до сих пор я получаю FileNotFoundException когда я пытаюсь получить к нему доступ?

Пожалуйста, что я делаю неправильно?

File cacheDir; 
    if (android.os.Environment.getExternalStorageState().equals(
    android.os.Environment.MEDIA_MOUNTED)) 
    { 
    //if SDCARD is mounted (SDCARD is present on device and mounted) 
    cacheDir = new File(android.os.Environment.getExternalStorageDirectory(),"LazyList"); 
    } 
    else 
    { 
    // if checking on simulator the create cache dir in your application context 
    cacheDir=MainActivity.this.getCacheDir(); 
    } 
    if(!cacheDir.exists()){ // create cache dir in your application context 
    cacheDir.mkdirs(); 
    } 

    String filename=String.valueOf(rss.getChannel().getItems().get(i).getEnclosure().getUrl().hashCode()); 

    File f = new File(cacheDir, filename); 
+2

вы должны убедиться, что результат 'cacheDir.mkdirs();' is 'true'. Возможно, вам не хватает разрешений для создания этого каталога на внешнем хранилище. – njzk2

+0

«когда я пытаюсь получить к нему доступ» - что это такое? Какая конкретная строка в этом коде вы рушитесь? – CommonsWare

+0

@ njzk2 меня глупо !!! Вот и все! Пожалуйста, njzk2, если вы опубликуете ответ, я буду рад принять его. Благодаря!!! –

ответ

1

Здесь

cacheDir = new File(android.os.Environment.getExternalStorageDirectory(),"LazyList"); 
// ... 
cacheDir.mkdirs(); 

Согласно документации getExternalStorageDirectory

Дать этому пути требует WRITE_EXTERNAL_STORAGE разрешения

Кроме того, я бы рекомендовал всегда проверить возвращаемое значение mkdirs, который указывает, создание каталога был успешным, как документ для этого метода говорит

Обратите внимание, что этот метод не бросает IOException на провал.

Смежные вопросы