java - 为什么 File 方法 rename() 会删除文件?

标签 java

我想删除 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);
    }
}

最佳答案

TL;DR:您正在移动文件。

您列出目录“O:\\test0”中的文件。

对于每个这样的文件,您创建一个字符串:

file.getName().replaceAll("\\s","")

你最终会得到:

new File("someFileName")

所以您已调用:

file.renameTo(new File("someFileName"))

现在,someFileName 不是绝对路径;而是一个相对路径。因此,您已从 O:\\test0\\some File Name 移动到 someFileName,其中 someFileName 位于程序的目录中。

附注无需调用System.exit(0)

关于java - 为什么 File 方法 rename() 会删除文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35328590/

相关文章:

java - 等待一定时间后打印不同的文本(JavaFX)

java - 如何将具有状态的对象置于版本控制之下?这还有道理吗?

java - 如何在 Spring Boot Security 中使用户以前的 session 无效

java - 将 appspot 域转发到我的域

Java - 从混音器录制

java.lang.ClassCastException : GridLayout. LayoutParams 无法转换为 Frame.LayoutParams

java - JTextArea 中是否可以具有非可变尺寸?

java - 将偶数四舍五入为两位小数 "0"?

java - 映射器可以写入多个文件吗

java - 如何使用 JConsole 分析交换空间