我有以下目录结构
Ranveers-MacBook-Air:custom-feeds ranveer$ ls /Users/ranveer/custom-feeds
README.md cartridges sites
Ranveers-MacBook-Air:custom-feeds ranveer$
我想遍历上面的目录,在输出中我只需要第一个目录(即第一级)
所需的输出(目录+完整路径)
我尝试使用以下代码生成我想要的输出
walk = require('walk');
walker = walk.walk('/Users/ranveer/custom-feeds');
walker.on('directories' , (root, dirStatsArray, next) => {
console.log(dirStatsArray);
next();
});
我在节点控制台中得到以下输出
> walker.on('directories' , (root, dirStatsArray, next) => {
... console.log(dirStatsArray);
... next();
... });
Walker {
domain:
Domain {
domain: null,
_events: { error: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
members: [] },
_events: { directories: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
_wStat: 'lstat',
_wStatSync: 'lstatSync',
_wsync: false,
_wq: [],
_wqueue: [],
_wcurpath: '/Users/ranveer/custom-feeds/.git/logs/refs/heads',
_wfilters: [],
_wfirstrun: true,
_wWalk: [Function],
_wfnodegroups:
{ files: [ [Object] ],
directories: [],
symbolicLinks: [],
blockDevices: [],
characterDevices: [],
FIFOs: [],
sockets: [],
nodes: [],
errors: [] },
_wcurfiles: [ 'master' ],
_wcurfile: 'master',
_wCurFileCallback: [Function: next] }
>
我看不到我的console.log
打印dirStatsArray
。
那么,如何遍历目录直到第一级
答案 0 :(得分:1)
你是不是只使用fs和path来非递归地遍历目录?
var fs = require('fs');
var path = require('path');
var p = './';
fs.readdir(p, function(err, files) {
files.map(function(file) {
return path.join(p, file);
}).filter(function(file) {
return fs.statSync(file).isDirectory();
}).forEach(function(file) {
console.log(file);
});
});
答案 1 :(得分:0)
因此,在查看github上的模块代码并查看一些已关闭的问题后,正确的方法是走到1 level
深度是为了不调用next()
。
由于next()
强制进行递归调用。