Groovy重命名文件

时间:2016-09-30 07:57:47

标签: file groovy io file-rename

我尝试使用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
}

当我运行此文件时,文件的名称未按预期更改。我想知道如何让它发挥作用。

1 个答案:

答案 0 :(得分:3)

这里有很多错误:

  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 仍然打印出旧名称。 但是,如果你看一下后面的实际目录,你会看到文件在目录中被正确重命名。