Cómo eliminar todos los archivos y carpetas en una carpeta de Android

Utilizo este código para eliminar todos los archivos:

File root = new File("root path"); File[] Files = root.listFiles(); if(Files != null) { int j; for(j = 0; j < Files.length; j++) { System.out.println(Files[j].getAbsolutePath()); System.out.println(Files[j].delete()); } } 

Se eliminará false donde Files[j] es una carpeta.

Quiero eliminar la carpeta y todos sus archivos secundarios.
¿Cómo puedo modificar esto?

La forma más sencilla sería utilizar FileUtils.deleteDirectory de la biblioteca IO de Apache Commons.

 File dir = new File("root path"); FileUtils.deleteDirectory(dir); 

Tenga en cuenta que esto también eliminará el directorio que contiene.

Añadir esta línea en el archivo gradle para tener Apache

 compile 'org.apache.commons:commons-io:1.3.2' 

Compruebe este enlace también cómo eliminar la carpeta de almacenamiento interno en android? .

 void DeleteRecursive(File fileOrDirectory) { if (fileOrDirectory.isDirectory()) for (File child : fileOrDirectory.listFiles()) DeleteRecursive(child); fileOrDirectory.delete(); } 
 File file = new File("C:\\A\\B"); String[] myFiles; myFiles = file.list(); for (int i=0; i<myFiles.length; i++) { File myFile = new File(file, myFiles[i]); myFile.delete(); } B.delete();// deleting directory. 

Puede escribir el método de esta manera: Elimina todos los archivos y subdirectorios en dir.Returns true si todas las eliminaciones se han realizado correctamente. Si falla una eliminación, el método deja de intentar eliminar y devuelve false.

 public static boolean deleteDir(File dir) { if (dir.isDirectory()) { String[] children = dir.list(); for (int i=0; i<children.length; i++) { boolean success = deleteDir(new File(dir, children[i])); if (!success) { return false; } } } // The directory is now empty so delete it return dir.delete(); } 

Puede comprobar de la siguiente manera:

 for(j = 0; j < Files.length; j++) { if(file.isDirectory()){ for(File f : file.listFiles()){ System.out.println(Files[j].getAbsolutePath()); System.out.println(Files[j].delete()); } else { System.out.println(Files[j].getAbsolutePath()); System.out.println(Files[j].delete()); } } 

Puede probar este código para eliminar archivos y subfiles

 public void deleteFile(File f){ String[] flist=f.list(); for(int i=0;i<flist.length;i++){ System.out.println(" "+f.getAbsolutePath()); File temp=new File(f.getAbsolutePath()+"/"+flist[i]); if(temp.isDirectory()){ deleteFile(temp) ; temp.delete(); }else{ temp.delete(); } 

Para su caso, esto funciona perfectamente http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#cleanDirectory(java.io.File)

 File dir = new File("dir_path"); if(dir.exists() && dir.isDirectory()) { FileUtils.cleanDirectory(dir); } 

Si quieres eliminar la carpeta misma. (No tiene que estar vacío). Puede ser utilizado para archivos también.

http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#forceDelete(java.io.File)

 File dir = new File("dir_path"); if(dir.exists()) { FileUtils.forceDelete(dir); } 

Si storageDir es un directorio

 for(File tempFile : storageDir.listFiles()) { tempFile.delete(); } 

Este código funciona para mí. "ImagesFolder" tiene algunos archivos y carpetas que a su vez tiene archivos.

  if (imagesFolder.isDirectory()) { String[] children = imagesFolder.list(); //Children=files+folders for (int i = 0; i < children.length; i++) { File file=new File(imagesFolder, children[i]); if(file.isDirectory()) { String[] grandChildren = file.list(); //grandChildren=files in a folder for (int j = 0; j < grandChildren.length; j++) new File(file, grandChildren[j]).delete(); file.delete(); //Delete the folder as well } else file.delete(); } } 

# 1

 File mFile = new File(Environment.getExternalStorageDirectory() + "/folder"); try { deleteFolder(mFile); } catch (IOException e) { Toast.makeText(getContext(), "Unable to delete folder", Toast.LENGTH_SHORT).show(); } public void deleteFolder(File folder) throws IOException { if (folder.isDirectory()) { for (File ct : folder.listFiles()){ deleteFolder(ct); } } if (!folder.delete()) { throw new FileNotFoundException("Unable to delete: " + folder); } } 

# 2 (raíz)

 try { Process p = Runtime.getRuntime().exec("su"); DataOutputStream outputStream = new DataOutputStream(p.getOutputStream()); outputStream.writeBytes("rm -Rf /system/file.txt\n"); outputStream.flush(); p.waitFor(); } catch (IOException | InterruptedException e) { Toast.makeText(getContext(), e.getMessage(), Toast.LENGTH_SHORT).show(); } 
  • Cómo prevenir "Programar el reinicio del servicio bloqueado"?
  • Visualización de texto (como puntuación) que cambia en cada fotograma
  • Cómo dar formato a la entrada de EditText al escribir con separadores de miles (,) en Android?
  • Cómo hacer que PagerAdapter cargue todas las páginas
  • ¿Existe una manera de almacenar de forma segura los datos de usuario en un dispositivo Android?
  • Botones del diseño de Inflated onClick el oyente no funciona
  • Cómo calcular el radio visible en Google Maps en Android
  • Recuperación de la información del dispositivo en Android
  • buscapersonas horizontal con localizador vertical. ¿Cómo podemos aplicar?
  • Problema con Retrofit y simple - intento de hacer un lector de RSS para Android
  • Cómo analizar un url de una cadena en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.