Для данного каталога, как я могу получить список файлов в хронологическом порядке (по дате-модификации) в Node.JS? Я ничего не видел в документах файловой системы.
Используя Node.JS, как вы получаете список файлов в хронологическом порядке?
Ответ 1
Сделайте снимок.
var dir = './'; // your directory
var files = fs.readdirSync(dir);
files.sort(function(a, b) {
return fs.statSync(dir + a).mtime.getTime() -
fs.statSync(dir + b).mtime.getTime();
});
Я использовал "sync" версию методов. Вы должны сделать их асинхронными по мере необходимости. (Возможно, только часть readdir
.)
Вероятно, вы можете немного повысить производительность, если кешируете информацию о статистике.
var files = fs.readdirSync(dir)
.map(function(v) {
return { name:v,
time:fs.statSync(dir + v).mtime.getTime()
};
})
.sort(function(a, b) { return a.time - b.time; })
.map(function(v) { return v.name; });
Ответ 2
Вы пробовали fs.readdir()
?
Ответ 3
В итоге я сделал следующее (используя подчеркивание):
1 получить файлы в каталоге с помощью files = fs.readFileSync(directory);
(вы можете попробовать catch catch)
Затем передайте их функции, подобной следующей. Это вернет вам упорядоченный список.
function orderByCTime(directory, files) {
var filesWithStats = [];
_.each(files, function getFileStats(file) {
var fileStats = fs.statSync(directory + file);
filesWithStats.push({
filename: file,
ctime: fileStats.ctime
});
file = null;
});
return _.sortBy(filesWithStats, 'ctime').reverse();
}
Подчеркните по умолчанию по умолчанию. Я отменяю его, поскольку мне это нужно.
Вы можете решить сортировать по другому стату (проверить node fs документацию здесь). Я предпочитаю использовать ctime, поскольку он должен также "трогать" файл.
Надежда помогает,