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

如何删除gradle中的空目录(或递归删除包含所有内容的目录)?,gradle,Gradle,我不知道如何删除目录中的所有内容 为了清理一个目录,我想删除其中的所有文件和目录:我想删除其中的所有内容(文件和目录) 我在删除任务中尝试了这一点,但我不知道如何让它同时删除目录而不仅仅是文件。我尝试了不同的方法来指定目录,但没有任何效果 task deleteGraphicsAssets(type:Delete) { delete fileTree('src').include('**/*') } 感谢您的帮助 编辑: 这是可行的,但似乎有点像黑客 task deleteGra

我不知道如何删除目录中的所有内容

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

我在删除任务中尝试了这一点,但我不知道如何让它同时删除目录而不仅仅是文件。我尝试了不同的方法来指定目录,但没有任何效果

task deleteGraphicsAssets(type:Delete) {
    delete fileTree('src').include('**/*')
}

感谢您的帮助


编辑:

这是可行的,但似乎有点像黑客

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

    doLast {
        file(dirName).mkdirs()
    }
}
我在寻找类似的东西:

task deleteGraphicsAssets(type: Delete) {
    deleteContentsOfDirectory "src"
}


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

task deleteGraphicsAssets(type: Delete) {
    delete "src"
}

这个“清理”任务的配置似乎很有效。

Groovy通过几种方法增强了File类。可以使用deleteDir()方法删除目录及其所有子目录和文件


task deletebin以下操作将删除src文件夹中的所有内容,但不影响文件夹本身:

task deleteGraphicsAssets(type: Delete) {
    def dirName = "src" 
    file( dirName ).list().each{
        f -> 
            delete "${dirName}/${f}"
    }
}
发现使用工作


有一种相对简单的方法可以让你冒着重温一个已被回答的话题的风险做到这一点

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

task deleteGraphicsAssets(type:Delete) {
    delete file('src').listFiles()
}

谢谢这不完全符合我的要求,我可以在删除后创建一个新的。唯一的问题是它看起来有点像黑客。。。(整个解决方案请参见上面的编辑)。我认为不可能保留
src
本身(在使用
Delete
时)。在不了解您的具体情况的情况下,我通常会说(重新)创建
src
不应该是
delete
任务的责任,而是任何需要(空的)
src
目录的任务的责任。请注意,许多Gradle任务将在必要时自动创建父目录。好的,在我看来,这两种方法都是有效的。感谢您指出在gradle中通常是这样做的。我的想法是有一个容器,一个任务把东西放进这个容器。容器不是由该任务创建的,而是始终存在的。创建一个“对象”(即目录及其内容)的任务可能更容易理解。FWIW,
clean{delete+=“src”}
会清除所有内容,包括目录。上面提到的方法将
src
保留在那里。这将删除所有文件,但保留空的子目录。您看到上面@peter niederwieser的答案了吗?这似乎和你的一样,只是代码少了一点。有人今天过得不好吗?@treesareywhere Peter的代码是
delete
任务的扩展,它只配置要删除的内容。如果您需要立即进行删除(例如,作为更大任务/流程中的一个步骤),那么这个答案就是正确的选择。这是一个比@DuncanSungWKim的答案更快的深树解决方案。您也可以使用
listFiles()
然后
delete f
HOLY SH**我已经尝试了所有方法,只有这一个对我有效!谢谢!!
task deleteGraphicsAssets(type: Delete) {
    delete "src"
}
clean {
    delete += fileTree('src').include('**/*')
}
task deletebin << {
    def binDir = new File('bin')
    binDir.deleteDir()
}
task deleteGraphicsAssets(type: Delete) {
    def dirName = "src" 
    file( dirName ).list().each{
        f -> 
            delete "${dirName}/${f}"
    }
}
ConfigurableFileTree ft = fileTree('someDir')
ft.include("xxx")
ft.exclude("yyy")

task delteFilesOnly() {
    doLast {
        //// for test
        //ft.each { File file ->
        //    println "===== " + file.absolutePath
        //}
        delete ft
    }
}

task deleteFilesAndDirs(){
    doLast {
        ft.visit { FileVisitDetails fvd ->
            //// for test
            //println "----- " + file.absolutePath
            delete fvd.file
        }
    }
}
task deleteGraphicsAssets(type:Delete) {
    delete file('src').listFiles()
}