6

为什么以下代码中文件的日期没有改变?

fLocal.location= C:\ 中的现有文件

fLocal.date= 以 Long 形式设置的日期

boolean x = new File(fLocal.location).setLastModified(Long.parseLong(fLocal.date));
System.out.println("Changed: " + x);
System.out.println(new Date(new File(fLocal.location).lastModified()));
System.out.println(new Date(Long.parseLong(fLocal.date)));

输出:

Changed: false
Fri Feb 15 23:02:51 CET 2013
Fri Feb 15 22:49:34 CET 2013
4

2 回答 2

2

根据我之前的评论,请遵循以下检查:

  1. 您的代码是否具有对该文件的写入权限?
  2. 文件是否处于打开状态?
  3. 在您执行此操作时,您当前是否正在使用任何其他应用程序读取(或写入!)该文件?

这些都是可能阻止您更改文件时间的项目。

用单行文本创建一个简单的纯文本文件,保存并关闭编辑器。然后尝试在您的应用程序中使用该文件。确保在尝试更改时间之前先调用exists()您的文件,以确保您确实拥有有效的文件。File Object

于 2013-02-15T22:34:27.713 回答
2

在我的本地测试您的代码并且它可以工作......我更改了系统上非常旧文件的修改日期......

-查看文件是否正在其他地方使用... -检查您是否对文件有权限

import java.io.File;
import java.io.IOException;
import java.util.Date;

class Test
{
    private class flocalClass
    {

        public String date;
        public String location="c:/Test/cascade.xyz";

    }
    public static void main (String[]args) throws IOException
    {
        flocalClass fLocal = new Test().new flocalClass();
        fLocal.date = Long.toString(new Date().getTime());
        boolean x = new File(fLocal.location).setLastModified(Long.parseLong(fLocal.date));
        System.out.println("Changed: " + x);
        System.out.println(new Date(new File(fLocal.location).lastModified()));
        System.out.println(new Date(Long.parseLong(fLocal.date)));
    }
}
于 2013-02-15T23:01:20.840 回答