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的答案都是很好的答案,但我只能接受一个。这一个具有清晰的文档结构,并且可以快速实现。谢谢你的帮助。