Каталог удаления Android не работает

1

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

public boolean DeletePoint(String JobName, String PointName){
    //Delete actual contents and file
    File folder = new File(rootSaveFolder "/" + PointName+"/");
    boolean returnBool = false; 
    try{
        returnBool = deleteDirectory(folder);
        folder.delete();
    } catch (SecurityException e){
        e.printStackTrace();
    }   
}

static public boolean deleteDirectory(File path) {
    if( path.exists() ) {
      File[] files = path.listFiles();
      if (files == null) {
          return true;
      }
      for(int i=0; i<files.length; i++) {
         if(files[i].isDirectory()) {
           deleteDirectory(files[i]);
         }
         else {
           files[i].delete();
         }
      }
    }
    return(path.delete());
  } 

Строкой для файла, который я удаляю, является: /mnt/sdcard/test/gg/

Я пробовал это с окончательным "/", и это тоже не сработало.

Теги:

5 ответов

1

Вот ваша проблема;

Ваша рекурсия почти правильная... Вот проблема.

Если файлы [i] - это каталог, (вы по праву идите, чтобы очистить все в нем). Однако, когда "все" в файлах [i] удалено, вы фактически не удаляете файлы [i].

Таким образом, рекурсия неполна; Что вам нужно сделать, так это удалить "else" внутри forloop.

Таким образом, файлы [i], которые являются каталогами, будут очищены после удаления всех вещей в нем. Ты просто оставил его.

Чтобы быть более конкретным:

public void deleteFile(String uri)
{
     File currentFile = new File(uri);
     File files[] = currentFile.listFiles();
     for (int i = 0; i < files.length; i++)
     {
          if (files[i].isDirectorty())
          {
              deleteFiles(files[i].toString());
          }
          //no else, or you'll never get rid of this folder!
          files[i].delete();
     }
}
1

Вы уверены, что ваш каталог пуст? Вы не можете удалить непустой каталог.

0
try {
    File tempFolder = new File(path);

    for (File f : tempFolder.listFiles()){
        if (!f.isDirectory()) {
            f.delete();
        }
        tempFolder.delete();
    }

} catch (Exception e) {
    e.printStackTrace();
}
0

Как вы проверяете, что папка оставлена? Иногда проводник файлов DDMS не синхронизирован, и вам нужно обновить его до того, как увидите, что каталог ушел.

  • 0
    Я использую Atro для просмотра SD-карты, и я также установил SD на свой компьютер. Оба по-прежнему показывают каталог
0

Установили ли вы соответствующие разрешения - WRITE_EXTERNAL_STORAGE в своем манифесте. Легко заметить иногда:/

Посмотрите на исходную тему, я думаю, что парень заставил ее работать...

Источник: удаление папки на SD-карте

  • 0
    Да, я определил это в своем манифесте. Он по-прежнему удаляет все остальное, но оставляет только папку.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню