2016-03-25 6 views
-3

の配列を作成...Nodejs - ここで私が何をしようとしているのですが、ちょうど周り私の頭を取得することはできませんファイルとフォルダ

が、私は私のプロジェクトでは、以下のファイルとフォルダを持っていると言います「FOLDER3は」「FOLDER2」のサブフォルダである:私が欲しいもの

- Folder1 
    - File 
    - File 
    - File 
- Folder2 
    - File 
    - File 
    - File 
    - Folder3 
     - File 
     - File 
     - File 

は、その構造を反映するオブジェクトを作成することです:

var listing = { 
    'Folder1' : { 
     'File', 
     'File', 
     'File' 
    } 
    'Folder2' : { 
     'File', 
     'File', 
     'File', 
     'Folder3' : { 
     'File', 
     'File' 
     } 
    } 
} 

私は、このような徒歩」などのモジュールを見てきました、しかし、それらを使用して作成する方法がわからない上記のようなオブジェクトである。私はthis questionも見ましたが、一番上の答えは一次元の配列を返します。これは私が探しているものではありません。

+0

を(https://nodejs.org/api/path.html )といくつかの再帰。また、このSOの質問を見て:http://stackoverflow.com/questions/5827612/node-js-fs-readdir-recursive-directory-search – cl3m

+0

@ cl3mその質問を見た。答えは、私が探しているものを得られません。 1次元の配列を返します。例えばFolder3のファイルは、 'Folder2/Folder3/File'という文字列で記述されます。 – nomis101uk

+0

https://gist.github.com/Cl3MM/1a7aaafe1fdcd43ccd1bを参照してください。ちょっと微調整する必要があるかもしれません。ところで、 – cl3m

答えて

0

は依存(ノードパッケージ自体以外の)再帰的なディレクトリトラバーサル作業: `PATH`モジュールを使用し

var fs = require('fs'); 
 
    function readDirs(path, depth) { 
 
     var fileIdentificator = '##file##'; 
 
     function readRecursive(pathsObject, path, depthCount) { 
 
      if (depthCount == 0) 
 
       return pathsObject; 
 
      var files = fs.readdirSync(path); 
 
      for (var fileIndex in files) { 
 
       var file = files[fileIndex]; 
 
       pathsObject[file] = fileIdentificator; 
 
       var currentPath = path + '/' + file; 
 
       if(fs.lstatSync(currentPath).isDirectory()){ 
 
       \t readRecursive(pathsObject[file] = {}, currentPath, depthCount-1); 
 
       } 
 
      } 
 
      return pathsObject; 
 
     } 
 
     return readRecursive({}, path, depth); 
 
    } 
 
    module.exports = readDirs; 
 

 
//the output will be like this 
 
    { 
 
     a: { 
 
      'a-a': {}, 
 
      'a-b': {}, 
 
      'a-c': {} 
 
     }, 
 
     b: { 
 
      'b-a': {}, 
 
      'b-b': {} 
 
     }, 
 
     c: { 
 
      'c-file.txt': '##file##' 
 
     }, 
 
     d: { 
 
      'd-file.txt': '##file##' 
 
     }, 
 
     'root-file.txt': '##file##' 
 
    }

関連する問題