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

问题描述:

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

假设我有一个名为“f il ena me .png”的文件名(我计划检查目录中的所有文件名)。如何删除所有空格并重命名图像,以便正确的文件名(对于此特定情况)是“文件名.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)); 
    } 
} 
+0

请不要让变量名以大写字母开头 - 它违背JAVA命名约定。 – Alexander 2015-02-10 23:51:47

+0

它的打印文件名是否正确? – 2015-02-11 00:00:14

我认为它不会删除的图像,但它们移动到您当前的工作目录,并将其重命名为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]; 
+0

嘿!你是对的。我一直没有注意到我正在工作的当前目录。哎呀!谢谢您的帮助。我会鼓励它,并确保我给它的路径名称。我理解你对于大写字母变量名称的观点,因为IB代表着某些东西,所以我有点撕碎它将它重命名为小写字母。我可能会重写一次完成的程序,并替换更有意义的var名称。 – tbcrawford 2015-02-10 23:59:06

+0

什么是“temp.split(”。png“)? – Alexander 2015-02-11 00:05:19

+0

你是对的,我得到了我的解决方案,我会在一分钟后将它作为我的问题的答案张贴,再次感谢您的帮助。忘了我在发布之前发现了一个bug – tbcrawford 2015-02-11 00:06:44

忽略命名约定(我打算以后再修改)这里我敲定了解决方案。

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

你还是忘了逃避“。” - 它应该是.split(“\\。png”)! – Alexander 2015-02-11 00:12:26

+0

明白了!非常抱歉,代码错误。在5天前进入Java我相信我已经习惯了一些小的东西,我很感激这个帮助,我发现它不必像上面提到的那样泄漏它,但是我确实需要知道 .split( “\\。png”) 您在我的程序中提到了另一点。 – tbcrawford 2015-02-11 00:16:23