Aru*_*gal 4 directory structure gradle depth
我在构建文件夹下有以下文件夹结构(在Gradle构建期间可以获得):
CDROM/disk1 CDROM/disk1/disk1file1a.txt CDROM/disk1/disk1file1b.txt CDROM/disk2/disk2file2a.txt CDROM/disk2/disk2file2btxt CDROM/disk2/disk2folder2x CDROM/disk2/disk2folder2y CDROM/disk3 CDROM/disk3/disk3 CDROM/disk3/disk33 CDROM/disk3/disk33/disk3 CDROM/folder1 CDROM/file1.txt
我怎么能告诉Gradle告诉我以下内容:
仅打印文件夹"CDROM"中的顶级/直接子文件夹(仅限),
即它应仅打印disk1,disk2,disk3和folder1
仅打印具有磁盘模式[0-9]的顶级/直接子文件夹(仅),即diskX,其中X是数字.
即它应该只打印disk1,disk2和disk3
以下将会这样做,但我认为应该有一种有效的方法来实现相同的,并且可以定义模式,并且不必使用我在下面使用的"IF"语句.
FileTree dirs = fileTree (dir: "$buildDir/CDROM", include: "disk*/**")
dirs.visit { FileVisitDetails fd ->
if (fd.directory && fd.name.startsWith('disk')){
println "------ $buildDir/CDROM_Installers/${fd.name} ---------------"
}
}
Run Code Online (Sandbox Code Playgroud)
如果你的意思是只有直接的孩子,CDROM那么顶级应该如下:
new File("${buildDir}/CDROM").eachDir{ if(it.name ==~/disk.*/) println it}
Run Code Online (Sandbox Code Playgroud)
如果您想要更深入地控制深度和其他内容,那么您可以尝试以下代码的变体:
new File("${buildDir}/CDROM").traverse( [maxDepth: 2, filter: ~/.*disk\d/,
type: groovy.io.FileType.DIRECTORIES]){
println it // or do whatever
}
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅遍历.
| 归档时间: |
|
| 查看次数: |
5304 次 |
| 最近记录: |