web-dev-qa-db-fra.com

Comment supprimer tous les fichiers et dossiers d'un dossier sur Android

J'utilise ce code pour supprimer tous les fichiers:

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());
    }
}

Il supprimera false où Files[j] est un dossier.

Je veux supprimer le dossier et tous ses sous-fichiers.
Comment puis-je modifier cela? 

23
brian

Le moyen le plus simple serait d’utiliser FileUtils.deleteDirectory depuis la bibliothèque Apache Commons IO.

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

Gardez à l'esprit que cela supprimera également le répertoire contenant.

Ajouter cette ligne dans le fichier de dégradé pour avoir Apache 

compile 'org.Apache.commons:commons-io:1.3.2'  
32
Lesleh

Vérifiez ce lien également Supprimer le dossier de la mémoire de stockage interne dans android? .

void deleteRecursive(File fileOrDirectory) {

    if (fileOrDirectory.isDirectory())
        for (File child : fileOrDirectory.listFiles())
            deleteRecursive(child);

    fileOrDirectory.delete();

}
46
duggu
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.

Vous pouvez écrire une méthode de cette façon: Supprime tous les fichiers et sous-répertoires sous dir.Retourne la valeur true si toutes les suppressions ont abouti. Si une suppression échoue, la méthode cesse d’essayer de supprimer et renvoie 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();
}
14
Achintya Jha

si storageDir est un répertoire

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

Vous pouvez vérifier comme ceci:

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());
    }
}
3
MysticMagicϡ

vous pouvez essayer ce code pour supprimer des fichiers et des sous-fichiers

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();
    }
3
Imrank

Dans votre cas, cela fonctionne parfaitement 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 vous voulez supprimer le dossier lui-même. (Il n'est pas nécessaire que ce soit vide). Peut être utilisé pour les fichiers aussi.

_ { 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);
}
2
Shashank

Ce code fonctionne pour moi. "imagesFolder" contient des fichiers et des dossiers contenant des fichiers.

  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();
      }
  }
0
Kittu

// Supprimer le dossier et son contenu 

public static void DeleteFolder(File folder)
{
    try
    {
        FileUtils.deleteDirectory(folder);
    } catch (Exception ex)
    {
        Log.e(" Failed delete folder: ", ex.getMessage());
    }
}

// Supprimer le contenu du dossier uniquement

public static void DeleteFolderContents(File folder)
{
    try
    {
        FileUtils.cleanDirectory(folder);
    } catch (Exception ex)
    {
        Log.e(" Failed delete folder contents: ", ex.getMessage());
    }
}

Docs: org.Apache.commons.io.FileUtils.cleanDirectory

0
Gogu CelMare