Подтвердить что ты не робот

Используя Node.JS, как вы получаете список файлов в хронологическом порядке?

Для данного каталога, как я могу получить список файлов в хронологическом порядке (по дате-модификации) в Node.JS? Я ничего не видел в документах файловой системы.

4b9b3361

Ответ 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; });

Ответ 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, поскольку он должен также "трогать" файл.

Надежда помогает,