我正在阅读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
?
答案 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);`