我正在编写一个小应用程序,它会从OSX(Yosemite)的文件中返回上次修改日期。
我使用了File
(java.io
)类,但方法lastModified()
始终返回数字0
。以下是我写的代码:
Date date = new Date();
date.setTime(file.lastModified());
如果我打印日期将是12月31日星期三21:00:00 BRT 1969,因为file.lastModified()
是0
。
有人可以帮助我吗?
答案 0 :(得分:2)
考虑使用java.nio.file.attribute
,它应该做你需要的一切:
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);
}
}
使用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
,可以使用以下内容:
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
,因为它具有内置的功能,相当于编写更少的代码,并且可能更少出错。