I'm trying to create a litte app which iterates through a give folder and output it's name, path and size which works fine . But I want the output to be interleaved.My current code looks like this: var fs = require('fs'); var walkPath = '/home/kalim/example'; var walk = function (dir, done) { fs.readdir(dir, function (error, list) { if (error) { return done(error); } var i = 0; (function next () { var file = list[i++]; if (!file) { return done(null); } path = dir + '/' + file; fs.stat(path, function (error, stat) { if (stat && stat.isDirectory()) { console.log(path); walk(path, function (error) { next(); }); } else { // ITEM HANDLING let element = { "name": file, "path": path, "size": stat.size } console.log(element); next(); } }); })(); }); }; process.argv.forEach(function (val, index, array) { if (val.indexOf('source') !== -1) { walkPath = val.split('=')[1]; } }); console.log('________processing...________'); walk(walkPath, function(error) { if (error) { throw error; } else { console.log('________finished.________'); } }); My output looks like this: ________processing...________ { name: 'app.js', path: '/home/kalim/example/app.js', size: 941 } { name: 'data.json', path: '/home/kalim/example/data.json', size: 379 } { name: 'file1.txt', path: '/home/kalim/example/folder1/folder1/file1.txt', size: 0 } { name: 'file2.txt', path: '/home/kalim/example/folder1/folder1/file2.txt', size: 0 } { name: 'file1.txt', path: '/home/kalim/example/folder1/folder2/file1.txt', size: 0 } { name: 'file2.txt', path: '/home/kalim/example/folder1/folder2/file2.txt', size: 0 } { name: 'file1.txt', path: '/home/kalim/example/folder2/folder1/file1.txt', size: 0 } { name: 'file2.txt', path: '/home/kalim/example/folder2/folder1/file2.txt', size: 0 } { name: 'file1.txt', path: '/home/kalim/example/folder2/folder2/file1.txt', size: 0 } { name: 'file2.txt', path: '/home/kalim/example/folder2/folder2/file2.txt', size: 0 } { name: 'package.json', path: '/home/kalim/example/package.json', size: 203 } { name: 'walk.js', path: '/home/kalim/example/walk.js', size: 1132 } ________finished.________ What it should look like: { name: 'example', path: '/home/kalim/example', size: TOTAL_SIZE_HERE, content: [ { name: 'app.js', path: '/home/kalim/example/app.js', size: 941, }, { name: 'folder1', path: '/home/kalim/example/folder1', size: TOTAL_SIZE_HERE, content: [ { name: 'file1.txt', path: '/home/kalim/example/folder1/folder1/file1.txt', size: 0 }, { name: 'file2.txt', path: '/home/kalim/example/folder1/folder1/file2.txt', size: 0 } ] } ] } and so on..How can I interleave the arrays and calculate the folder sizes?
Submitted July 14, 2018 at 07:29PM by K4lim
No comments:
Post a Comment