std.file.timeLastModified
- multiple declarations
Function timeLastModified
Returns the time that the given file was last modified.
Parameters
Name | Description |
---|---|
name | the name of the file to check |
Returns
A SysTime
.
Throws
FileException
if the given file does not exist.
Example
import std .datetime : abs, DateTime, hnsecs, SysTime;
scope(exit) deleteme .remove;
import std .datetime : Clock, seconds;
auto currTime = Clock .currTime();
enum leeway = 5 .seconds;
deleteme .write("bb");
assert(abs(deleteme .timeLastModified - currTime) <= leeway);
Function timeLastModified
Returns the time that the given file was last modified. If the
file does not exist, returns returnIfMissing
.
A frequent usage pattern occurs in build automation tools such as
make or ant. To check whether file target
must be rebuilt from file source
(i.e., target
is
older than source
or does not exist), use the comparison
below. The code throws a FileException
if source
does not
exist (as it should). On the other hand, the SysTime
default
makes a non-existing target
seem infinitely old so the test
correctly prompts building it.
Parameters
Name | Description |
---|---|
name | The name of the file to get the modification time for. |
returnIfMissing | The time to return if the given file does not exist. |
Returns
A SysTime
.
Example
if (source .timeLastModified >= target .timeLastModified(SysTime .min))
{
// must (re)build
}
else
{
// target is up-to-date
}
Example
import std .datetime : SysTime;
writeln("file.does.not.exist" .timeLastModified(SysTime .min)); // SysTime.min
auto source = deleteme ~ "source";
auto target = deleteme ~ "target";
scope(exit) source .remove, target .remove;
source .write(".");
assert(target .timeLastModified(SysTime .min) < source .timeLastModified);
target .write(".");
assert(target .timeLastModified(SysTime .min) >= source .timeLastModified);