2012-05-11 18 views

Odpowiedz

68

Daj ten strzał.

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(); 
      }); 

Użyłem wersji "sync" metod. Powinieneś uczynić je asynchronicznymi w razie potrzeby. (Prawdopodobnie właśnie readdir część.)


Prawdopodobnie można zwiększyć wydajność trochę jeśli buforowania informacji statystycznych.

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; }); 
+0

50. głosów w górę ... – 981

+0

getTime() nieokreślony. – 981

0

Czy próbowałeś już fs.readdir()?

http://nodejs.org/docs/v0.3.1/api/fs.html#fs.readdir

+0

fs.readdir() nie zwraca w porządku chronologicznym. – Newtang

+2

Nie sądzę, że jakakolwiek zdefiniowana funkcja zamówi je dla ciebie, ale możesz go użyć w połączeniu z 'fs.stat (path, [callback])' (używając mtime) do sortowania tablicy. http://stackoverflow.com/questions/7559555/last-modified-file-date-in-node-js – Chase

0

skończyło się za pomocą podkreślenia jak daje okazję, aby wykazać co stat użyć do sortowania.

1-te pobrać pliki w katalogu z użyciem files = fs.readFileSync(directory); (może chcesz spróbować ERR catch w katalogu przypadków nie istnieje lub uprawnienia do odczytu)

Następnie przekazać je do funkcji jak następnym. To zwróci ci uporządkowaną listę.

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(); 
} 

Podkreślenie sort by asc by default. Odwracam go, ponieważ potrzebuję go w malejącej kolejności.

Możesz wybrać sortowanie według innej statystyki (check node fs documentation here). Wybieram użycie ctime, ponieważ powinno to również uwzględniać "dotykanie" pliku.

Nadzieja pomaga,

Powiązane problemy