【问题标题】:Remove whitespace from all filenames in directory - Java从目录中的所有文件名中删除空格 - Java
【发布时间】:2015-04-11 05:11:33
【问题描述】:

我有图像目录,我想通过删除名称中的所有空格来重命名文件。

假设我有一个名为“file ena me .png”的文件名(我计划检查目录中的所有文件名)。如何删除所有空格并重命名图像,以便正确的文件名(对于这种特定情况)是“filename.png”。

到目前为止,我已经尝试了以下代码,它实际上删除了目录中的图像(我目前正在目录中的一个图像上测试它)。

public static void removeWhiteSpace (File IBFolder) {
    // For clarification:
    // File IBFolder = new File("path/containing/images/folder/here");
    String oldName;
    String newName;
    String temp;
    for (File old : IBFolder.listFiles()) {
        oldName = old.getName();
        temp = oldName.replaceAll(" ", "");
        // I have also tried:
        // temp = oldName.replaceAll("//s", "");
        temp = temp.split(".png")[0];
        newName = temp + ".png";
        System.out.println(newName);
        old.renameTo(new File(newName));
    }
}

【问题讨论】:

  • 请不要让变量名以大写字符开头 - 这违反了 JAVA 命名约定。
  • 打印出来的文件名对吗?

标签: java image directory whitespace rename


【解决方案1】:

我认为它不会删除图像,而是将它们移动到您当前的工作目录并将其重命名为newName,但由于newName 缺少路径信息,它会将其重命名/移动到“./ "(从您运行程序的任何位置)。

我认为你在这些行中有一个错误:

    temp = temp.split(".png")[0];
    newName = temp + ".png";

“。”是一个通配符,假设您的文件名为“some png.png”,newName 将是“som.png”,因为“some png.png”.replaceAll(" ", "").split("。 png") 的结果是 "som"。

如果出于任何原因您需要 String.split() 方法,请正确引用“.”:

    temp = temp.split("\\.png")[0];

【讨论】:

  • 明白了!你是对的。我一直没有注意我正在工作的当前目录。哎呀!谢谢您的帮助。我会修改它并确保我给它路径名。我理解你关于大写变量名的观点,我有点难以将它重命名为小写,因为 IB 代表某些东西。完成后我可能会重写程序并替换更有意义的变量名称。
  • 这个 "temp.split(".png") 到底是什么意思?
  • 你是对的。我得到了我的解决方案。我会在一分钟内将其发布为我的问题的答案。再次感谢您的帮助。在我发布之前我忘记了我有一个错误。
【解决方案2】:

忽略命名约定(我打算稍后修复)是我最终确定的解决方案。

public static void removeWhiteSpace (File IBFolder) {
    // For clarification:
    // File IBFolder = new File("path/containing/images/folder/here");
    String oldName;
    String newName;
    for (File old : IBFolder.listFiles()) {
        oldName = old.getName();
        if (!oldName.contains(" ")) continue;
        newName = oldName.replaceAll("\\s", "");

        // or the following code should work, not sure which is more efficient
        // newName = oldName.replaceAll(" ", "");

        old.renameTo(new File(IBFolder + "/" + newName));
    }
}

【讨论】:

  • 你还是忘了转义“.” - 它应该是 .split("\\.png") !
  • 知道了!非常抱歉糟糕的代码。我相信我 5 天前刚开始接触 Java,而且我已经习惯了一些小事情。我很感激帮助。我发现没有必要像你上面提到的那样把它洒出来。但我确实需要知道你提到的 .split("\\.png") 在我的程序中的另一点。
猜你喜欢
  • 1970-01-01
  • 2023-03-19
  • 2017-05-13
  • 2014-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-11
  • 2014-06-19
相关资源
最近更新 更多