So löschen Sie Dateien von einem Verzeichnis, aber nicht die Ordner

Habe ich einige code, der löscht alle Dateien in einem Ordner, das Problem ist zwar, das ist toll, ich möchte in der Lage sein, zu löschen alle Dateien in einem Verzeichnis, aber lassen Sie die Ordner intakt, so dass ich nicht haben, um in die einzelnen Ordner und löschen Sie die Dateien in es, das ist mein Aktueller 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/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();
            }
        }

    }
}

Wie könnte ich das ändern mein code um dieses Ziel zu erreichen?

EDIT :

Habe ich geändert mein 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();
        }

    }

Und während Sie dies tut, rufen Sie alle Ordner, dies ist meine Konsole:

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 nicht löschen Sie die Dateien in diese Ordner, wie kann ich dies tun?

EDIT 3: Mit Rekursion ich bin jetzt immer einen stack-überlauf-Fehler.

Hier ist mein 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();
    }
}
Warum können Sie nicht verwenden, Datei.isDirectory()?
wollen Sie die Datei löschen, rekursiv oder nur die Dateien in den angegebenen Ordner, verlassen-Dateien in den untergeordneten Ordnern
ich möchte in der Lage sein, das löschen aller Dateien innerhalb einer Verzeichnis-Struktur, aber lassen Sie die Ordner intakt, ein edit Hinzugefügt

InformationsquelleAutor user2065929 | 2013-02-23

Schreibe einen Kommentar