如何使用Java重命名目录中的所有文件?

时间:2013-06-25 21:28:39

标签: java file directory rename

好的,所以我需要重命名很多文件,它们都在同一个目录中。目录中有多个文件夹,其中包含文件,也不需要重命名。

我需要做的是用下划线替换文件名中的任何空格。

我是java的初学者,所以如果只有一个文件我可以自己做,我可以用Java指定文件,但在这种情况下我不能。

例如,如果文件名是“文件编号1”,我需要将其重命名为“file_number_one”。 我还想保持扩展名不变。有许多文件都有不同的扩展名。

非常感谢您的帮助,如果有任何问题,我会尽力回答这些问题。

编辑:

好的,我想出来了,但不是用Java。 使用这些网站herehere我使用windown PowerShell来解决这个问题。

基本打开PowerShell,cd进入目录,然后输入:

dir -Recurse | Rename-Item –NewName { $_.name –replace “ “,”_” }

这将替换目录中所有文件和文件夹中带下划线的所有空格。 对不起,我无法用Java解决这个问题,但这是另一种似乎有用的选择。

2 个答案:

答案 0 :(得分:3)

  1. 如果我是你,我会使用FilenameUtils。它有一种方法可以使用名为getBaseName的方法获取没有扩展名的文件名。
  2. 获得基本名称后,只需使用String.replaceAll替换带下划线的空格。
  3. Rename包含该结果的文件。
  4. 要获取要操作的文件列表,您可以使用FileUtils。它有一些名为listFiles的方法可用于此。

答案 1 :(得分:0)

http://people.apache.org/~jochen/commons-io/site/apidocs/org/apache/commons/io/DirectoryWalker.html

将重命名实施到String normalizeName( String )并使用:

public class FileRenamer extends DirectoryWalker {

  public List rename(File startDirectory) {
      List results = new LinkedList();
      walk(startDirectory, results);
      return results;
  }

  protected boolean handleDirectory(File directory, int depth, Collection results) {
      return true;
  }

  protected void handleFile(File file, int depth, Collection results) {
    String newName = convert( file.getName() );
    File file2 = new File( file.getParentFile(), newName )
    file.renameTo( file2 )
    results.add(file);
  }
}

new FileRenamer.rename( baseDirectory );