Skip to content

Instantly share code, notes, and snippets.

@baniol
Created November 1, 2015 22:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save baniol/95509ef15c82fcd3bee7 to your computer and use it in GitHub Desktop.
Save baniol/95509ef15c82fcd3bee7 to your computer and use it in GitHub Desktop.
Get largest file from a folder with Promise. node.js
var fs = require('fs');
var path = require('path');
var dir = path.join(__dirname, './');
// var dir = '/Users/marcinbaniowski/Downloads';
var readPromise = new Promise((resolve, reject) => {
fs.readdir(dir, (err, files) => {
resolve(files);
});
})
.then(files => {
var counter = files.length;
var stats = [];
var promises = files.map(file => {
return new Promise((resolve, reject) => {
fs.stat(path.join(dir, file), (err, stat) => {
resolve(stat);
});
});
});
return {promises: promises, files: files};
})
.then(res => {
return Promise.all(res.promises).then(stats => {
return [stats, res.files];
});
})
.then(res => {
var stats = res[0];
var files = res[1];
var largest = stats
.filter(stat => stat.isFile())
.reduce(function (prev, next) {
if (prev.size > next.size) return prev
return next
})
var retFile = files[stats.indexOf(largest)];
console.log(retFile + ' : ' + largest.size/1024);
})
.catch(err => console.log('Error: ' + err));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment