【问题标题】:Groovy rename a fileGroovy 重命名文件
【发布时间】:2016-09-30 07:57:47
【问题描述】:

我正在尝试使用 Groovy 重命名目录中的文件,但我似乎无法理解它是如何工作的。

这是我的脚本:

import groovy.io.FileType

def dir = new File("C:/Users/דודו/Downloads/Busta_Rhymes-Genesis-(Retail)-2001-HHI")

def replace = {
    if (it == '_') {
        ' '
    }
}

String empty = ""

dir.eachFile (FileType.FILES) { file ->
    String newName = file.name
    newName = newName.replaceAll(~/Busta_Rhymes/, "$empty")
    newName = newName.replaceAll(~/feat/, "ft")
    newName = newName.replaceAll(~/-HHI/, "$empty")
    newName = newName.replaceAll(~/--/, "-")

    newName = newName.collectReplacements(replace)

    file.renameTo newName

    println file.name
}

当我运行它时,文件的名称没有按预期更改。我想知道我怎样才能让它工作。

【问题讨论】:

  • 有什么问题?怎么突然改名了?您能否在问题中添加示例文件名和结果(以及预期结果)?
  • 文件名完全没有改变。如果我不清楚,我很抱歉

标签: file groovy io file-rename


【解决方案1】:

这里有很多问题:

  1. 您的dir 变量不是目录;它是您实际要更改的目录中的文件。更改此行:

    dir.eachFile (FileType.FILES) { file ->
    

    到这里:

    dir.parentFile.eachFile (FileType.FILES) { file ->
    
  2. renameTo 方法不会重命名本地名称(我知道,非常违反直觉),它会重命名路径。所以更改以下内容:

        String newName = file.name
    

    到这里:

        String newName = file.path
    
  3. 现在,出于某种我无法理解的原因,println file.name 仍然 打印出旧名称。 不过,如果你看一下实际的目录后记,你会发现文件在目录中被正确地重命名了。

【讨论】:

    猜你喜欢
    • 2014-09-09
    • 1970-01-01
    • 2015-10-08
    • 2016-05-29
    • 2014-01-20
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 2018-04-14
    相关资源
    最近更新 更多