我正在尝试获取按修改时间排序的目录内容。我认为没有办法直接在dirEntries
调用中执行此操作,因此我的策略是收集所有文件时间和名称,然后对两个数组进行同步排序。
问题 1:我不知道如何将 asysTime
转换为整数。
问题 2:我不知道如何对两个数组进行并行排序。
与 D 中的每个问题一样,不可能找出如何做到这一点:(
这是我的代码:
import std.file;
import std.stdio : writeln;
import std.algorithm;
import std.datetime;
void main() {
string[] myFiles;
double[] myTimes;
foreach (DirEntry e; dirEntries("c:/users/istaffel/", SpanMode.shallow)) {
// calculate unix time (this doesn't work)
auto dur = (cast(Date)e.timeLastModified) - Date(1970,1,1);
// store modified time and filename
myTimes ~= dur.seconds;
myFiles ~= e.name;
}
// now find a way to sort myFiles in order of ascending myTimes...
// print in order
for (int i = 0; i < myTimes.length; i++) {
writeln(myTimes[i], " ", myFiles[i]);
}
}