Groovy 重命名文件

Dav*_*sry 5 io groovy file 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
}
Run Code Online (Sandbox Code Playgroud)

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

Bal*_*Rog 6

这里有很多错误:

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

    dir.eachFile (FileType.FILES) { file ->
    
    Run Code Online (Sandbox Code Playgroud)

    对此:

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

        String newName = file.name
    
    Run Code Online (Sandbox Code Playgroud)

    对此:

        String newName = file.path
    
    Run Code Online (Sandbox Code Playgroud)
  3. 现在,出于某种超出我理解的原因,println file.name 仍然打印出旧名称。但是,如果您查看实际目录后记,您将看到该文件已在目录中正确重命名。