2017-09-24 7 views
-1

私はfsというモジュールを使用して、再帰的に読み取るディレクトリを要求しようとしています。私は途中で問題を抱えていました。私にはファイル名しか与えられませんでした。ここに私はそれが必要な方法です:フォルダを持つディレクトリを再帰的に読み取る

  • ファイル名。
  • また、そのファイルのディレクトリ。 この結果は、オブジェクトとして、または配列にまとめられている可能性があります。

誰でも手伝ってください。おかげさまで

+0

あなたがこれまでにしようとしているものをご提示ください –

+0

_「そしてまた、そのファイルのディレクトリ」あなたはすでにこれを持っている_、それ以外の場合はFS方式を使用wouldnあなたが読もうとしていたディレクトリが分からない。各サブディレクトリのパスを意味する場合は、深く進むにつれて、各サブディレクトリ名をパスに連結してください。しかし、あなたのコードを見ることなく、コードを修正する方法を具体的に教えることはできません。 –

答えて

0

ここには再帰的な解決策があります。あなたはそれをテストし、ファイルに保存し、node yourfile.js /the/path/to/traverseを実行することができます。

const fs = require('fs'); 
const path = require('path'); 
const util = require('util'); 

const traverse = function(dir, result = []) { 

    // list files in directory and loop through 
    fs.readdirSync(dir).forEach((file) => { 

     // builds full path of file 
     const fPath = path.resolve(dir, file); 

     // prepare stats obj 
     const fileStats = { file, path: fPath }; 

     // is the file a directory ? 
     // if yes, traverse it also, if no just add it to the result 
     if (fs.statSync(fPath).isDirectory()) { 
      fileStats.type = 'dir'; 
      fileStats.files = []; 
      result.push(fileStats); 
      return traverse(fPath, fileStats.files) 
     } 

     fileStats.type = 'file'; 
     result.push(fileStats); 
    }); 
    return result; 
}; 

console.log(util.inspect(traverse(process.argv[2]), false, null)); 

出力は次のようになります。

[ { file: 'index.js', 
    path: '/stackoverflow/test-class/index.js', 
    type: 'file' }, 
    { file: 'message.js', 
    path: '/stackoverflow/test-class/message.js', 
    type: 'file' }, 
    { file: 'somefolder', 
    path: '/stackoverflow/test-class/somefolder', 
    type: 'dir', 
    files: 
    [ { file: 'somefile.js', 
     path: '/stackoverflow/test-class/somefolder/somefile.js', 
     type: 'file' } ] }, 
    { file: 'test', 
    path: '/stackoverflow/test-class/test', 
    type: 'file' }, 
    { file: 'test.c', 
    path: '/stackoverflow/test-class/test.c', 
    type: 'file' } ] 
+0

それは動作します!どうもありがとう。あなたは最高です –

関連する問題