gpt4 book ai didi

javascript - 目录树数组node.js

转载 作者:行者123 更新时间:2023-11-28 19:58:30 24 4
gpt4 key购买 nike

我正在尝试使用 Node js 将目录树生成到数组中。输出将是:

[ __Dirname [array of sub directories] ]
["FolderA"[ ["SubFolderA",[]] ]], ["FolderB",[]]
<小时/>
function readDir(dir){
fs.readdir(dir, function(err, files){
for(var i=0;i<files.length;i++){
(function(j){
fs.stat(files[j], function(err, stats){
if(stats.isDirectory()){
readDir(files[j]);
}
});
}
}
});
}

如果您知道更简单的方法,请告诉我。我所需要的只是目录及其所有子目录的递归列表。

最佳答案

以下代码使用 node-walker生成目录树对象

var path = require('path');
var util = require('util');
var walker = require('walker');

/*
* To walk a directory and generate the tree object
*
* @param dest {string} the directory to start with.
* @param cb {function} the callback function, cb(err, dirObj)
*
*/
function readDir(dest, cb) {
var dirObj = {};
var child, parts, obj;

walker(dest)
.on('dir', function(dir, stat) {
if (dir === dest) return;

child = dir.slice(dest.length, dir.length);
if (child.indexOf(path.sep) === 0) {
child = child.slice(1, child.length);
};

parts = child.split(path.sep);

obj = dirObj;

for(var i=0;i<parts.length;i++) {
if (parts[i] !== '') {
if (obj[parts[i]] === undefined) {
obj[parts[i]] = {};
};

obj = obj[parts[i]];
}
};
})
.on('error', function(err, entry, stat) {
cb(err, null);
})
.on('end', function() {
cb(null, dirObj);
})
};

readDir(__dirname, function(err, dirObj) {
if (err) {
console.log(err);
} else {
// Handle the returned directory object
console.log(util.inspect(dirObj, {showHidden: true, depth: null}));
}
});

关于javascript - 目录树数组node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22086928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com