gpt4 book ai didi

java - 重命名后尝试在 Java 中设置文件的最后修改时间

转载 作者:搜寻专家 更新时间:2023-10-31 19:49:22 25 4
gpt4 key购买 nike

这是我开始时使用的代码:

long modifiedTime = [some time here];
File oldFile = new File("old_name.txt");
boolean renamed = oldFile.renameTo(new File("new_name.txt");
boolean timeChanged = oldFile.setLastModified(modifiedTime);

System.out.println("renamed: " + renamed);
System.out.println("time changed: " + timeChanged);

我看到的输出是:

renamed: true
time changed: false

但是当我尝试时:

long modifiedTime = [some time here];
boolean renamed = new File("old_name.txt").renameTo(new File("new_name.txt"));
boolean timeChanged = new File("new_name.txt").setLastModified(modifiedTime);

System.out.println("renamed: " + renamed);
System.out.println("time changed: " + timeChanged);

它似乎工作正常,输出如下:

renamed: true
time changed: true

为什么第二种方法有效,而第一种方法无效?

最佳答案

在第一种情况下,您试图更改不再存在的文件的最后修改属性!因为你刚刚重命名了它。在第二种情况下,您正在更改现有有效文件的属性。

发生这种情况是因为 java 类 File 是 native 命令的薄包装器。如果您创建实例 old = new File("oldname"),然后调用 rename,然后在 old 实例上调用一些方法,它实际上执行系统调用并发送文件名和命令。但此时文件名无关紧要。

我希望现在一切都清楚了。

关于java - 重命名后尝试在 Java 中设置文件的最后修改时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6805743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com