首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过gradle FileTree.include删除目录

通过gradle FileTree.include删除目录
EN

Stack Overflow用户
提问于 2014-06-17 23:39:31
回答 3查看 9.1K关注 0票数 6

我想说:

代码语言:javascript
复制
clean.delete(fileTree("a") {
   include "subdir/"
   include "aFile"
})

删除目录"subdir“和文件"aFile”。但是"subdir“并没有被删除。我可以明文规定:

代码语言:javascript
复制
clean.delete("a/subdir")

但这比我想要的要多。fileTree.include能做这份工作吗?

到目前为止,我已经想出了:

代码语言:javascript
复制
[ "subdir",
  "aFile",
  ...
].each { it -> 
   clean.delete("a/$it") 
}

但那只是有点尴尬。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-27 17:25:38

恐怕这是不可能的。在梯度论坛上看到这个讨论。讨论导致了这个问题

一个简单的测试显示

代码语言:javascript
复制
task makeDir << {
    ['a', 'a/subdir'].each { new File(it).mkdirs() }
    new File('a/aFile').createNewFile()

    def tree = fileTree('a') {
        include 'subdir/'
        include 'aFile'
    }

    tree.each {File file ->
        println file
    }
}

只打印文件,而不打印目录,因为目录是遍历的。您的解决方案很好,但您可以节省一些图表:

代码语言:javascript
复制
[ "subdir",
  "aFile",
  ...
].each { clean.delete("a/$it") }

因此,fileTree只适用于目录树中的文件,而不是目录。

票数 8
EN

Stack Overflow用户

发布于 2014-06-18 08:21:00

您可以这样指定它:

代码语言:javascript
复制
clean {
   delete 'a/aFile', 'a/subdir'
}

不知道为什么fileTree不能工作。

票数 2
EN

Stack Overflow用户

发布于 2018-06-07 03:22:13

这边怎么样?

代码语言:javascript
复制
clean.delete(file('a').listFiles().findAll { it.getName() == 'subdir' || it.getName() == 'aFile' })

我只是碰巧知道如何删除构建目录下的所有目录和文件,而不包括一个特定的目录。

代码语言:javascript
复制
clean.delete(file('build').listFiles().findAll { it.getName() != 'tools' })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24274966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档