为什么setLastModified(time)不能用于此文件?

时间:2013-02-15 22:09:31

标签: java file date

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

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

2 个答案:

答案 0 :(得分:2)

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

  1. 您的代码是否具有该文件的写入权限?
  2. 文件是否处于打开状态?
  3. 您目前是否在阅读(或撰写!)文件时使用任何其他应用程序?
  4. 这些都是可能阻止您更改文件时间的项目。

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

答案 1 :(得分: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)));
    }
}