我想删除Windows放入文件名的空格。 我运行以下代码来重命名测试目录中的所有文件。结果:所有文件都消失了。 我很困惑为什么。
import java.io.*;
public class FileRenamer {
public static void main(String[] args) {
for (File file: (new File("O:\\test0")).listFiles())
file.renameTo(new File(file.getName().replaceAll("\\s","")));
System.exit(0);
}
}
答案 0 :(得分:2)
列出目录"O:\\test0
中的文件。
对于每个此类文件,您可以创建String
:
file.getName().replaceAll("\\s","")
你最终得到:
new File("someFileName")
所以你打电话给:
file.renameTo(new File("someFileName"))
现在,someFileName
不是绝对的路径;但是相对路径。因此,您已从O:\\test0\\some File Name
移至someFileName
,其中someFileName
位于该计划的目录中。
P.S。无需拨打System.exit(0)
。
答案 1 :(得分:0)
是的,我发现这些文件已移至我的类文件目录。
鲍里斯关于相对路径与绝对路径的提示向我展示了解决方案:使用
public File(File parent, String child)
新抽象File对象的构造函数。以下代码正确完成了工作。
import java.io.*;
public class FileRenamer {
public static void main(String[] args) {
File dir = new File("O:\\test0");
for (File file: dir.listFiles())
file.renameTo(new File(dir, file.getName().replaceAll("\\s","")));
}
}