Java 如何使用set last modified date(设置上次修改日期)以当前时间触摸文件夹&;时间

Java 如何使用set last modified date(设置上次修改日期)以当前时间触摸文件夹&;时间,java,Java,我正在尝试更新某个特定文件夹的上次修改日期,以下是我得到的: public void touchFolder(){ File folderToTest = new File("C:\\Temp"); SimpleDateFormat dateFormatUtc = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); dateFormatUtc.setTimeZone(TimeZone.getTimeZone("UTC"));

我正在尝试更新某个特定文件夹的上次修改日期,以下是我得到的:

public void touchFolder(){
    File folderToTest = new File("C:\\Temp");
    SimpleDateFormat dateFormatUtc = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    dateFormatUtc.setTimeZone(TimeZone.getTimeZone("UTC"));
    String newTime = dateFormatUtc.format(new Date());
    folderToTest.setLastModified(Long.parseLong(newTime));
}
我只是把这段代码放在一个测试用例中,所以不用担心调用这个方法等等


我在将日期格式解析为long时出错,设置上次修改的日期和时间时使用的格式是什么?

在您的代码中
newTime
是一个格式化日期
2018-12-19 15:21:31
,无法解析为
long
。您要做的是以毫秒为单位提供时间,例如:

Date d = new Date();
file.setLastModified(d.getTime());
根据javadoc方法:


时间-新的上次修改的时间,自历元(1970年1月1日格林尼治标准时间00:00:00)以来以毫秒为单位测量


我认为您应该只做
folderToTest.setLastModified(System.currentTimeMillis())

这是一个示例,使用
java.nio.file.Files

Path path = ...
FileTime now = FileTime.fromMillis(System.currentTimeMillis());
Files.setLastModifiedTime(path, now);

使用
System.currentTimeMillis()即可,而不是将日期格式化为某个字符串并将其解析为一个长字符串(因为
2018-12-19…
不是一个长字符串,所以这行不通)将当前时间长化。考虑使用<代码> java .Nio < /C>和 java。时间>代码>关于时间和文件系统。LAST-修改的时间,从历元以来的毫秒(1970年1月1日:00:00),不需要实例化<代码>新的数据()/<代码>。您可以使用
System.currentTimeMillis()
@normalz true,这只是一个使用任意
Date
对象而不是当前时间的示例,以防OP记住了一个精确的日期。哦,这是真的:)
FileTime
也可以作为
FileTime.from(Instance.now())我的路径是一个字符串,所以我使用了这个:
路径path=Paths.get(“path\\of\\directory”)工作得很好!Tiffany为什么你接受了这个答案,而不是我们之前添加的带有@Karol Dowbecki?@z的答案都是很好的答案,但我只能接受一个。这一个具有清晰的文档结构,并且可以快速实现。谢谢你的帮助。