Java Mac Os X-上次修改日期为0
我正在编写一个小应用程序,从OSX(约塞米蒂)文件返回上次修改的日期 我使用了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,它
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;
}
}