使用Node.JS,你如何获得按时间顺序的文件列表?

对于一个给定的目录,我怎么能得到在Node.JS按时间顺序(通过date修改)的文件列表? 我没有看到文件系统文档中的任何内容。

给这个一个镜头。

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

我使用了“同步”版本的方法。 你应该根据需要使它们asynchronous。 (可能只是readdir部分。)


如果caching统计信息,您可能可以提高性能。

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

你有没有试过fs.readdir()

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

我结束了以下(使用下划线):

首先使用files = fs.readFileSync(directory);获取目录中的files = fs.readFileSync(directory); (你可能想尝试catch err)

然后将它们传递给像下面这样的函数。 这将返回一个有序的列表。

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

下划线默认按ascsorting 。 我按照需要将其撤消。

你可以决定按另一个统计( 这里检查节点FS文档 )sorting。 我select使用ctime,因为它应该迎合“接触”文件。

希望有帮助,