如何使用Scala获取文件的创建日期

时间:2017-11-23 10:26:49

标签: scala

我的项目中的一项要求需要检查文件的创建日期,并确定它是否超过当天的2天。在Java中,有类似下面的代码可以让我们获得文件的创建日期和其他信息。

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

System.out.println("creationTime: " + attr.creationTime());
System.out.println("lastAccessTime: " + attr.lastAccessTime());
System.out.println("lastModifiedTime: " + attr.lastModifiedTime());

但我不知道如何在Scala中编写相同的代码。任何人都可以告诉我如何在Scala中实现相同的功能。

2 个答案:

答案 0 :(得分:4)

<强>爪哇

执行此操作的首选方法是使用较新的java.nio.file API:

import java.nio.file.*;

您可以在Files中访问修改时间(以及其他许多内容):

FileTime modified = Files.getLastModifiedTime(path)

这会为您提供FileTime,可以将其转换为java.time.Instant

Instant modifiedInstant = modified.toInstant();

然后您可以执行此操作:

import java.time.temporal.ChronoUnit.DAYS;

boolean isMoreThan2DaysOld = modifiedInstant.plus(2, DAYS).isBefore(Instant.now())

<强> Scala的

所有这些都可以从scala访问(除非您使用的是ScalaJS):

import java.nio.file._; import java.time._; import java.time.temporal.ChronoUnit.DAYS
val isMoreThan2DaysOld 
  = Files.getLastModifiedTime(path).toInstant.plus(2, DAYS) isBefore Instant.now

答案 1 :(得分:3)

感谢您提出问题。

在这里,

Welcome to Scala 2.12.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_152).

import java.nio.file.{Files, Paths}
import java.nio.file.attribute.BasicFileAttributes

val pathStr = "/tmp/test.sql"

Files.readAttributes(Paths.get(pathStr), classOf[BasicFileAttributes])

Files.readAttributes(Paths.get(pathStr), classOf[BasicFileAttributes]).creationTime

res3:java.nio.file.attribute.FileTime = 2018-03-06T00:25:52Z