我正在尝试编写一个递归文件列表函数。它的工作原理,除了递归部分;每当它读取文件夹时,它就会永远停留在循环中。例如:
文件夹C:/ Server包含多个文本文件和一个文件夹。该程序将记录该文件,但当它看到该文件夹时,它将始终在输出之间交替:
C:/Server/Dir
和
C:/Server/Dir/text.txt
以下是代码:
var fs = require('fs');
var paths = {};
function findPaths(dir)
{
var thisdir = fs.readdirSync(dir);
for(Index = 0; Index < thisdir.length; Index++)
{
console.log(dir+"/"+thisdir[Index]);
if(fs.statSync(dir+"/"+thisdir[Index]).isDirectory())
{
paths[dir+"/"+thisdir[Index]] = "directory";
findPaths(dir+"/"+thisdir[Index])
}
else
{
paths[dir+"/"+thisdir[Index]] = "file";
}
}
}
findPaths("C:/Server");
console.log("FINISHED!");
请不要在回复中链接到图书馆;我不想让臃肿的软件掩盖我的无知。
答案 0 :(得分:1)
你的Index
是一个全局变量 - 这不适用于递归。将其更改为本地:
for(var Index = 0; Index < thisdir.length; Index++)
{
// ...
}