在nodejs中递归的自身问题

时间:2014-03-03 05:14:21

标签: javascript node.js recursion filesystems

我正在尝试编写一个递归文件列表函数。它的工作原理,除了递归部分;每当它读取文件夹时,它就会永远停留在循环中。例如:

文件夹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!");

请不要在回复中链接到图书馆;我不想让臃肿的软件掩盖我的无知。

1 个答案:

答案 0 :(得分:1)

你的Index是一个全局变量 - 这不适用于递归。将其更改为本地:

for(var Index = 0; Index < thisdir.length; Index++)
  {
     // ...
  }