从目录中的所有文件名中删除空格 - Java

时间:2015-02-10 23:45:50

标签: java image directory whitespace rename

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

所以假设我有一个名为“f il 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));
    }
}

2 个答案:

答案 0 :(得分:2)

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

我认为你在这些方面有一个错误:

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

“”。是一个wilcard字符,让我们说你的文件名为“some png.png”,newName将是“som.png”,因为“some png.png”.replaceAll(“”,“”)。split( “.png”)导致“som”。

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

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

答案 1 :(得分:1)

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

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