如何在gradle中删除空目录(或递归所有内容的目录)?

tre*_*ere 17 gradle

我无法弄清楚如何删除目录的所有内容.

为了清理目录,我想删除其中的所有文件和目录:我想擦除里面的所有内容(文件和目录).

我尝试使用删除任务,但我无法弄清楚它也删除目录而不仅仅是文件.我尝试过不同的方法来指定目录,但没有任何作用.

task deleteGraphicsAssets(type:Delete) {
    delete fileTree('src').include('**/*')
}
Run Code Online (Sandbox Code Playgroud)

.

task deleteGraphicsAssets(type:Delete) {
    delete fileTree('src').include('/')
}
Run Code Online (Sandbox Code Playgroud)

.

task deleteGraphicsAssets(type:Delete) {
    delete fileTree('src').include('*')
}
Run Code Online (Sandbox Code Playgroud)

任何帮助赞赏!


编辑:

这工作 - 但它似乎有点像黑客.

task deleteGraphicsAssets(type: Delete) {
    def dirName = "src"
    delete dirName

    doLast {
        file(dirName).mkdirs()
    }
}
Run Code Online (Sandbox Code Playgroud)

我在寻找类似的东西:

task deleteGraphicsAssets(type: Delete) {
    deleteContentsOfDirectory "src"
}
Run Code Online (Sandbox Code Playgroud)

要么

task deleteGraphicsAssets(type: Delete) {
    delete {dir : "src", keepRoot : true }
}
Run Code Online (Sandbox Code Playgroud)

Pet*_*ser 25

要删除src目录及其所有内容:

task deleteGraphicsAssets(type: Delete) {
    delete "src"
}
Run Code Online (Sandbox Code Playgroud)


小智 9

Groovy使用多种方法增强了File类.您可以使用deleteDir()方法删除包含其所有子目录和文件的目录.

task deletebin << {
    def binDir = new File('bin')
    binDir.deleteDir()
}
Run Code Online (Sandbox Code Playgroud)

  • @treesAreEverywhere Peter 的代码是 `delete` 任务的扩展,它只是 _configures_ _will_ 被删除的内容。如果您需要立即进行删除(例如,作为更大任务/流程中的一个步骤),那么这个答案就是要走的路。 (2认同)

Her*_*eri 9

以下将删除src文件夹中的所有内容,但保持文件夹本身不变:

task deleteGraphicsAssets(type: Delete) {
    def dirName = "src" 
    file( dirName ).list().each{
        f -> 
            delete "${dirName}/${f}"
    }
}
Run Code Online (Sandbox Code Playgroud)


Dun*_*pen 7

冒着回复主题的风险,有一种相对简单的方法可以做到这一点.

此任务将删除'src'下的所有文件和目录,而不会遍历文件树,也不会删除'src'目录

task deleteGraphicsAssets(type:Delete) {
    delete file('src').listFiles()
}
Run Code Online (Sandbox Code Playgroud)