使用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()
?
我结束了以下(使用下划线):
首先使用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,因为它应该迎合“接触”文件。
希望有帮助,