Удаление файлов на SDCard;Устройство считает, что файлы не существуют, хотя они и существуют - PullRequest
0 голосов
/ 01 июня 2011

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

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-карте, но когда этот код выполняется, успех возвращается как ложный, потому что 'файлы' равны нулю. Почему это ноль? !!

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

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

Ответы [ 2 ]

1 голос
/ 01 июня 2011

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

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

1 голос
/ 01 июня 2011

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

Environment.getExternalStorageDirectory().getPath()

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

...