Java I / O:设置时间戳记

时间:2018-11-15 10:27:21

标签: java io file-attributes

我正在阅读Oracle文档,遇到了一些错误。

也许有人可以比文档更能确认或解释它。

来源: https://docs.oracle.com/javase/tutorial/essential/io/fileAttr.html

代码:

Path file = ...;
BasicFileAttributes attr =
    Files.readAttributes(file, BasicFileAttributes.class);
long currentTime = System.currentTimeMillis();
FileTime ft = FileTime.fromMillis(currentTime);
Files.setLastModifiedTime(file, ft);

是否应该在setLastModifiedTime()而不是attr上调用Files? (attr.setLastModifiedTime(file, ft)

如果不需要,为什么根本需要attr

3 个答案:

答案 0 :(得分:0)

此方法的内部代码为:

  public static Path setLastModifiedTime(Path path, FileTime time)
        throws IOException
    {
        getFileAttributeView(path, BasicFileAttributeView.class)
            .setTimes(time, null, null);
        return path;
    }

如您所见,它使用getFileAttributeView()获取属性,然后在其上设置时间。

此方法只是Files类中提供的便捷API。

答案 1 :(得分:0)

BasicFileAttributes用于获取许多文件系统的基本属性,并且未定义任何修改方法。因此,要修改LastModifiedTime,您必须使用在Files类中定义的方法。

仅供参考:Files

答案 2 :(得分:0)

是的,attr在此特定代码段中未使用,它看起来像是相同代码的复制粘贴,用于不同代码段,

因为摘要的上下文是Basic File Attributes

在示例前后,其他代码段使用attr,如下所示:

System.out.println("size: " + attr.size());  

System.out.println("isReadOnly is " + attr.isReadOnly());

因此,在此代码段中,您可以删除未使用的分配行

BasicFileAttributes attr = Files.readAttributes(file, BasicFileAttributes.class);`