Comment faire pour supprimer des fichiers d'un répertoire, mais pas les dossiers

J'ai créer un code qui supprime tous les fichiers dans un dossier, la question est alors que ce qui est grand, je veux être capable de supprimer tous les fichiers dans un répertoire, mais laisser les dossiers intacts, alors je n'ai pas à aller dans chaque dossier et supprimer les fichiers qu'il contient, c'est mon code actuel :

@ViewScoped
@ManagedBean
public class Delete {

    public void DeleteFiles() throws IOException {
        System.out.println("Called deleteFiles");
        File file = new File("D:/Documents/NetBeansProjects/printing~subversion/fileupload/web/resources/pdf/up617648/");

        String[] myFiles;
        if (file.isDirectory()) {
            myFiles = file.list();
            for (int i = 0; i < myFiles.length; i++) {
                File myFile = new File(file, myFiles[i]);
                System.out.println(myFile);
                myFile.delete();
            }
            DeleteFiles2();
        }

    }
    public void DeleteFiles2() throws IOException {
        System.out.println("Called deleteFiles2");
        File file = new File("D:/Documents/NetBeansProjects/printing~subversion/fileupload/Uploaded/up617648/");

        String[] myFiles;
        if (file.isDirectory()) {
            myFiles = file.list();
            for (int i = 0; i < myFiles.length; i++) {
                File myFile = new File(file, myFiles[i]);
                System.out.println(myFile);
                myFile.delete();
            }
        }

    }
}

Comment pourrais-je modifier mon code pour atteindre cet objectif?

EDIT :

J'ai changé mon code :

@ViewScoped
@ManagedBean
public class Delete {

    public void DeleteFiles() throws IOException {
        System.out.println("Called deleteFiles");
        File file = new File("D:/Documents/NetBeansProjects/printing~subversion/fileupload/web/resources/pdf/");

        String[] myFiles;
        if (file.isDirectory()) {
            myFiles = file.list();
            for (int i = 0; i < myFiles.length; i++) {
                File myFile = new File(file, myFiles[i]);
                System.out.println(myFile);
               if (!myFile.isDirectory()) {
                    myFile.delete();
                }
            }
            DeleteFiles2();
        }

    }

Et même si cela n'appelle tous les dossiers, c'est ma console:

INFO: Called deleteFiles
INFO: D:\Documents\NetBeansProjects\printing~subversion\fileupload\web\resources\pdf\cam01342
INFO: D:\Documents\NetBeansProjects\printing~subversion\fileupload\web\resources\pdf\geg00061
INFO: D:\Documents\NetBeansProjects\printing~subversion\fileupload\web\resources\pdf\null
INFO: D:\Documents\NetBeansProjects\printing~subversion\fileupload\web\resources\pdf\up617648
INFO: D:\Documents\NetBeansProjects\printing~subversion\fileupload\web\resources\pdf\up626088
INFO: Called deleteFiles2

Tt ne supprime pas les fichiers à l'intérieur de ces dossiers, comment puis-je faire cela?

EDIT 3: Utilisation de la récursivité, je suis maintenant une erreur de dépassement de pile.

Voici mon code :

public void DeleteFiles() {
    File file = new File("D:/Documents/NetBeansProjects/printing~subversion/fileupload/web/resources/pdf/");
    System.out.println("Called deleteFiles");
    if (file.isDirectory()) {
        for (File f : file.listFiles()) {
            DeleteFiles();
        }
    } else {
        file.delete();
    }
}
  • Pourquoi ne pouvez-vous pas utiliser de Fichier.isDirectory()?
  • voulez-vous supprimer le fichier de manière récursive ou seulement les fichiers dans le dossier donné, en laissant les fichiers dans les sous-dossiers
  • je veux être en mesure de supprimer tous les fichiers à l'intérieur d'une structure de répertoire, mais laissez les dossiers intacts, ajout d'une édition
InformationsquelleAutor user2065929 | 2013-02-23