Удаление файлов на SDCard; Устройство считает, что файлы не существуют, хотя они существуют

Я столкнулся с проблемой в следующем коде. Я пытаюсь удалить папку и все ее содержимое. Иногда это работает, а иногда нет.

boolean success = false;

String directory = Environment.getExternalStorageDirectory().toString();

directory += "/.SID/Downloads/DC0601";

File path = new File(directory);

File[] files;

try 
{
    files = path.listFiles();

    if (files == null)
    {
        success = path.delete();
    }
    else
    {
        for (int i = 0; i < files.length; i ++)
        {
            File currentFile = files[i];

            if (currentFile != null)
                currentFile.delete();
        }

        success = path.delete();
    }
} 
catch (Exception e) 
{
    success = false;
    Log.e("deleteData Exception: ", e.toString());
}

Здесь происходит то, что в некоторых случаях каталог «DC0601» существует и содержит файлы на SD-карте, но когда этот код запускается, успех возвращается как false, потому что «файлы» равны нулю. Почему ноль?!!

Я просто не могу этого понять. Если я полностью закрою приложение, а затем запущу его, оно обнаружит файлы и каталог и сможет успешно их удалить. В противном случае, если я использую приложение какое-то время, а затем запускаю код, он думает, что этого каталога и этих файлов нет.

Кто-нибудь сталкивался с подобными проблемами с delete()?


person Sid    schedule 01.06.2011    source источник


Ответы (2)


Я вижу, вы захватываете каталог внешнего хранилища, но я не вижу, чтобы вы проверяли его состояние.

Что возвращает Environment.getExternalStorageState()?

person tugs    schedule 01.06.2011
comment
Согласно File.listFiles(): результат нулевой, если этот файл не является каталогом. - person tugs; 02.06.2011
comment
Хорошо. Но когда я закрываю процесс и подключаю SDCard для USB-накопителя, я вижу там папку со всеми файлами внутри.... - person Sid; 02.06.2011

Если вы используете

Environment.getExternalStorageDirectory().getPath()

Я никогда не использовал .toString().

person daveD    schedule 01.06.2011
comment
Нет... не помогло :( Спасибо - person Sid; 01.06.2011