24

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

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

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

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

.

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

.

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"
}

或者

task deleteGraphicsAssets(type: Delete) {
    delete {dir : "src", keepRoot : true }
}
4

6 回答 6

30

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

task deleteGraphicsAssets(type: Delete) {
    delete "src"
}
于 2013-10-10T15:35:03.690 回答
11

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

task deleteGraphicsAssets(type: Delete) {
    def dirName = "src" 
    file( dirName ).list().each{
        f -> 
            delete "${dirName}/${f}"
    }
}
于 2015-08-04T11:09:13.827 回答
10

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

task deletebin << {
    def binDir = new File('bin')
    binDir.deleteDir()
}
于 2015-06-25T08:42:18.297 回答
10

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

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

task deleteGraphicsAssets(type:Delete) {
    delete file('src').listFiles()
}
于 2018-01-31T04:41:56.727 回答
3
clean {
    delete += fileTree('src').include('**/*')
}

这个“干净”任务的配置似乎有效。

于 2014-05-20T10:50:57.663 回答
0

发现使用FileTree#visit有效。

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
        }
    }
}
于 2017-04-27T02:47:50.203 回答