从目录中的所有文件名删除空格 - 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));
}
}
我认为它不会删除的图像,但它们移动到您当前的工作目录,并将其重命名为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];
嘿!你是对的。我一直没有注意到我正在工作的当前目录。哎呀!谢谢您的帮助。我会鼓励它,并确保我给它的路径名称。我理解你对于大写字母变量名称的观点,因为IB代表着某些东西,所以我有点撕碎它将它重命名为小写字母。我可能会重写一次完成的程序,并替换更有意义的var名称。 – tbcrawford 2015-02-10 23:59:06
什么是“temp.split(”。png“)? – Alexander 2015-02-11 00:05:19
你是对的,我得到了我的解决方案,我会在一分钟后将它作为我的问题的答案张贴,再次感谢您的帮助。忘了我在发布之前发现了一个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));
}
}
你还是忘了逃避“。” - 它应该是.split(“\\。png”)! – Alexander 2015-02-11 00:12:26
明白了!非常抱歉,代码错误。在5天前进入Java我相信我已经习惯了一些小的东西,我很感激这个帮助,我发现它不必像上面提到的那样泄漏它,但是我确实需要知道 .split( “\\。png”) 您在我的程序中提到了另一点。 – tbcrawford 2015-02-11 00:16:23
请不要让变量名以大写字母开头 - 它违背JAVA命名约定。 – Alexander 2015-02-10 23:51:47
它的打印文件名是否正确? – 2015-02-11 00:00:14