java - 如何删除目录中的文件但不删除文件夹

标签 java delete-file

我创建了一些代码来删除文件夹中的所有文件,问题是虽然这很棒,但我希望能够删除目录中的所有文件但保持文件夹完好无损,所以我不必进入每个文件夹并删除其中的文件,这是我当前的代码:

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

    }
}

我如何修改我的代码来实现这个目标?

编辑:

我已将代码更改为:

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

    }

虽然这确实调用了所有文件夹,但这是我的控制台:

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 不会删除这些文件夹中的文件,我该如何执行此操作?

编辑 3:使用递归,我现在收到堆栈溢出错误。

这是我的代码:

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

最佳答案

为什么不直接做

if (!myFile.isDirectory()) myFile.delete();

而不是

myFile.delete();

关于java - 如何删除目录中的文件但不删除文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15041971/

相关文章:

java - JAXB 忽略 XmlElement 指令

c# - 从服务器删除文件

java - java删除文件后如何释放资源?

java - 如何使用 Spring 将嵌套键值对从属性文件加载到 Java 对象中?

java - 消息摘要哈希MD5

java - Spark (Java) - 添加单个平均值作为新列

java - jSTL标签需要哪个spring jar文件

c# - 从列表框和文件夹中删除选定的文件

vb.net - 该进程无法访问该文件,因为它正被另一个进程使用

java - 在java中解压缩后删除zip文件