0

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

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

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

例如,如果文件名为“file number one”,我需要将其重命名为“file_number_one”。我也想保持扩展不变。有一堆文件都有不同的扩展名。

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

编辑:

好的,我想通了,但不是在 Java 中。在此处此处使用这些网站,我使用windown PowerShell 解决了这个问题。

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

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

这会将目录中所有文件和文件夹中的所有空格替换为下划线。抱歉,我无法在 Java 中弄清楚,但这是一种似乎可行的替代方法。

4

2 回答 2

3
  1. 如果我是你,我会为此使用FilenameUtils 。它有一种使用名为getBaseName的方法来获取不带扩展名的文件名的方法。
  2. 获得基本名称后,只需使用String.replaceAll下划线替换空格即可。
  3. 用结果重命名文件。
  4. 要获取要操作的文件列表,您可以使用FileUtils。它有一些命名的方法listFiles可以用于此目的。
于 2013-06-25T21:30:13.687 回答
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 );
于 2013-06-26T01:12:19.420 回答