【问题标题】:How do I rename all files in a directory with Java? [closed]如何使用 Java 重命名目录中的所有文件? [关闭]
【发布时间】:2013-06-22 20:56:41
【问题描述】:

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

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

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

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

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

编辑:

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

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

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

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

【问题讨论】:

  • 为什么不使用脚本语言来代替呢?我想会快得多。
  • 怎么样?就像我说的,我是一个初学者,对编码和脚本并不熟悉。
  • 如果您在 Windows 上工作,AutoIt 会很快完成。但大多数脚本语言都可以。这样做你需要:1)下载语言,2)阅读教程,3)尝试编写你需要的代码。我不知道有什么替代品。 Java 几乎是一样的。您可能需要下载 tieTYT 推荐的实用程序库,查看文档并尝试解决此问题。
  • 好吧,不是在 Java 中,但这就是我在寻找的几乎HERE。向下滚动到他们谈论 PowerShell 的部分。问题是它将重命名目录顶层中的所有内容,而不是其余文件夹中的所有内容。

标签: java file directory rename


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

【讨论】:

  • 完全正确——不要重新发明轮子! 1+
【解决方案2】:

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 );

【讨论】:

    猜你喜欢
    • 2023-03-04
    • 2014-12-30
    • 2014-05-16
    • 2015-02-28
    • 2014-11-08
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    相关资源
    最近更新 更多