Я пытаюсь удалить весь каталог. Я искал, и я использую этот код, и я могу удалить все в каталоге, но каталог все еще остается. Вот точный код, который у меня есть на случай, если я что-то упустил.
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/
Я пробовал это с окончательным "/", и это тоже не сработало.
Вот ваша проблема;
Ваша рекурсия почти правильная... Вот проблема.
Если файлы [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();
}
}
Вы уверены, что ваш каталог пуст? Вы не можете удалить непустой каталог.
try {
File tempFolder = new File(path);
for (File f : tempFolder.listFiles()){
if (!f.isDirectory()) {
f.delete();
}
tempFolder.delete();
}
} catch (Exception e) {
e.printStackTrace();
}
Как вы проверяете, что папка оставлена? Иногда проводник файлов DDMS не синхронизирован, и вам нужно обновить его до того, как увидите, что каталог ушел.
Установили ли вы соответствующие разрешения - WRITE_EXTERNAL_STORAGE в своем манифесте. Легко заметить иногда:/
Посмотрите на исходную тему, я думаю, что парень заставил ее работать...
Источник: удаление папки на SD-карте