renameTo()不起作用

时间:2014-10-21 11:20:02

标签: java groovy

我需要通过在文件名中用-替换_来重命名文件。

假设文件名是ab-9.xml,则应为ab_9.xml

renameTo()对我不起作用。还有其他办法吗?这是我的代码:

File replaceCheracter(File file) {
        File oldPath = new File(file.getPath())
        String filePath = file.getPath()
        if(filePath.contains("-")){
            String newFilePath = filePath.replace("-", "_")
            if(oldPath.renameTo(newFilePath)) {
                System.out.println("renamed");
             } else {
                System.out.println("Error");
             }
        }
        return oldPath
    }

2 个答案:

答案 0 :(得分:3)

您应该考虑使用java.nio.file包:

final Path file = Paths.get("path\\to\\your-file.txt");

Files.move(file, file.resolveSibling(file.getFileName().toString().replace("-", "_")));

使用非常方便的函数Path#resolveSibling()作为Files#move()的第二个参数。

说明:

  • Path#resolveSibling()获取调用它的Path对象的目录路径,并交换所提供参数的最后一部分(实际的文件名)(新的,在这种情况下修改了文件名)。

将此行为用作Files#move()的第二个参数将导致源目录和目标目录相同的移动,因此它只重命名文件。

有关详细信息,请参阅The Java Tutorials - File I/O

答案 1 :(得分:0)

renameTo方法接受File作为参数而不是String

更改oldPath.renameTo(newFilePath) oldPath.renameTo(new File(newFilePath))