Java Mac Os X-上次修改日期为0

Java Mac Os X-上次修改日期为0,java,macos,date,Java,Macos,Date,我正在编写一个小应用程序,从OSX(约塞米蒂)文件返回上次修改的日期 我使用了File(java.io)类,但是方法lastModified()总是返回数字0。以下是我编写的代码: Date date = new Date(); date.setTime(file.lastModified()); 如果我打印,日期将是Wed Dec 31 21:00:00 BRT 1969,因为file.lastModified()是0 有人能帮我吗?考虑使用java.nio.file.attribute,它

我正在编写一个小应用程序,从OSX(约塞米蒂)文件返回上次修改的日期

我使用了
File
java.io
)类,但是方法
lastModified()
总是返回数字
0
。以下是我编写的代码:

Date date = new Date();
date.setTime(file.lastModified());
如果我打印,日期将是Wed Dec 31 21:00:00 BRT 1969,因为
file.lastModified()
0


有人能帮我吗?

考虑使用
java.nio.file.attribute
,它应该可以满足您的所有需要:

java.nio.file.attribute.file: java.nio.file.attribute.BasicFileAttributes: 使用
BasicFileAttributes
还可以获得其他文件属性:

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributes;

class FileAttributes {
    public static void main(String[] args) throws Exception {

        String path = "/path/to/file";

        Path file = Paths.get(path);
        BasicFileAttributes attr =
          Files.readAttributes(file, BasicFileAttributes.class);
        System.out.println("lastModifiedTime = " + attr.lastModifiedTime());
        System.out.println("lastAccessTime   = " + attr.lastAccessTime());
    }
}

java.io.xml文件: 如果您想坚持使用
java.io.File
,您可以使用以下内容:

import java.io.File;
import java.text.DateFormat;
import java.util.Date;

class timeStamp {
    public static void main(String[] args) {
        String start = getTimeStamp();
        System.out.println(start);
    }

    public static String getTimeStamp() {
        File file = new File(fileTime());
        long lastModifytime = file.lastModified();
        Date date = new Date(lastModifytime);
        DateFormat df = DateFormat.getDateInstance();
        df = DateFormat.getDateTimeInstance();
        return df.format(date);
    }

    private static String fileTime() {
        String fileTime = "/path/to/file"; 
        return fileTime;
    }
}

我更喜欢
java.nio.file.attribute
而不是
java.io.file
,因为它具有内置的功能,这意味着编写的代码更少,出错的可能性也更小。

文件存在吗?
file.exists()
说了什么?你试过使用nio2 API吗?你能解释一下为什么当另一种方法不起作用时,这种方法会起作用吗?@AndrewMedico:lastModified所依赖的代码中显然缺少一些东西(很可能是文件的正确路径)。如果代码要检查一个不存在的文件,那么它通常会返回日期
1969年12月31日下午5:00:00
,尽管在没有看到更多OPs代码的情况下,很难说清楚为什么另一个无法正常工作。第二个代码块是怎么回事?您有一个未使用的空类,
true
作为
if
条件,以及一个没有主体的if语句。这不是好代码。你可以用它来代替读取属性,它基本上做相同的事情。@AndrewMedico:我很忙,代码是从另一个项目中提取的。我添加它只是为了展示
lastModified()
的基本概念,这可能是个错误。不管怎样,现在应该清理一下了。。。
import java.io.File;
import java.text.DateFormat;
import java.util.Date;

class timeStamp {
    public static void main(String[] args) {
        String start = getTimeStamp();
        System.out.println(start);
    }

    public static String getTimeStamp() {
        File file = new File(fileTime());
        long lastModifytime = file.lastModified();
        Date date = new Date(lastModifytime);
        DateFormat df = DateFormat.getDateInstance();
        df = DateFormat.getDateTimeInstance();
        return df.format(date);
    }

    private static String fileTime() {
        String fileTime = "/path/to/file"; 
        return fileTime;
    }
}