第 10 行对每个 artistDir 调用 eachDir() , 第 10 行的 { 和第 17 行的 之间的代码形成另一个处理 albumDir 的闭包 。
第 14 行 , 在每个 albumDir 上调用 eachFile() , 第 14 行的 { 和第 16 行的 之间的代码形成了处理专辑内容的第三级闭包 。
在本文的范围内 , 我对每个文件唯一需要做的就是开始构建信息表 , 我将其创建为一个以竖线分隔的 CSV 文件 , 它可以导入 LibreOffice 或 OfficeOnly 或任何其他电子表格 。 现在 , 代码输出前三列:艺术家目录名、专辑目录名和内容文件名(同样 , 第 2 行输出 CSV 标题行) 。
在我的 Linux 笔记本电脑上运行它会产生以下输出:
$ groovy TagAnalyzer.groovy | head
artistDir|albumDir|contentFile
Habib Koite & Bamada|Afriki|02 - Ntesse.flac
Habib Koite & Bamada|Afriki|08 - NTeri.flac
Habib Koite & Bamada|Afriki|01 - Namania.flac
Habib Koite & Bamada|Afriki|07 - Barra.flac
Habib Koite & Bamada|Afriki|playlist.m3u
Habib Koite & Bamada|Afriki|04 - Fimani.flac
Habib Koite & Bamada|Afriki|10 - Massake.flac
Habib Koite & Bamada|Afriki|11 - Titati.flac
Habib Koite & Bamada|Afriki|03 – Africa.flac
[...
Richard Crandell|Spring Steel|04-Japanese Lullaby [Richard Crandell
.flac
Richard Crandell|Spring Steel|Spring Steel.pdf
Richard Crandell|Spring Steel|03-Zen Dagger [Richard Crandell
.flac
Richard Crandell|Spring Steel|cover.jpg
$
在性能方面:
$ time groovy TagAnalyzer.groovy | wc -l9870real0m1.482suser0m4.392ssys0m0.230s$
又好又快 。 它在一秒半内处理近 10000 个文件!对我来说足够快 。 可观的性能、紧凑且可读的代码 , 还有什么不喜欢的?
相关经验推荐
- 三星|三星NEO QLED 8K系列电视发布,搭载全新的Tizen系统
- 索尼Xperia|宁可加钱,也不要受制于同质化,这就是我给大家购机的最大忠告
- 华为mate|打开电视发现看啥都要VIP
- 一加科技|大半个月高强度使用一加Ace Pro,我后悔了吗?
- |戴上它,你也会像我一样摇头晃脑——1MORE Aero空间音频降噪TWS耳机
- 机器|大头哥发过来的炸弹机告诉了我们什么道理
- 音响|电视音响开箱,被声音包围的感觉,有点让人流连忘返
- 折叠屏|客观分析:下半年该选折叠屏还是直屏?我发现预算与体验是关键
- 华为|本来认定pro的,pro后盖没有P40好看,充电这点我确实接受不了22.5W
- 索尼Xperia|慎选!这些手机我不建议购买
