我有图像目录,我想通过删除名称中的所有空格来重命名文件。
所以假设我有一个名为“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));
}
}
答案 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));
}
}