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

时间:2015-04-30 01:57:46

标签: java macos date

我正在编写一个小应用程序,它会从OSX(Yosemite)的文件中返回上次修改日期。

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

Date date = new Date();
date.setTime(file.lastModified());

如果我打印日期将是12月31日星期三21:00:00 BRT 1969,因为file.lastModified()0

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

考虑使用java.nio.file.attribute,它应该做你需要的一切:

java.nio.file.attribute.File:

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

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

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

        Path file = Paths.get(path);
        FileTime time = Files.getLastModifiedTime(file);
        System.out.println("lastModifiedTime = " + time);
    }
}

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());
    }
}

http://docs.oracle.com/javase/8/docs/api/java/nio/file/attribute/BasicFileAttributes.html

的java.io.File:

如果您想坚持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,因为它具有内置的功能,相当于编写更少的代码,并且可能更少出错。