2011-07-06 30 views
3

讀取目錄我是很新的服務器端編程和的NodeJSRecursivly中的NodeJS

我需要閱讀目錄遞歸該目錄(文件名的數組中獲得每個文件的文件名(相對路徑)應該返回)

我認爲這是一件非常常見的事情,所以我希望如果有人能分享代碼。或者告訴我正確的方法。 謝謝

+1

[在node.js中獲取目錄中的所有文件名]的可能重複(http://stackoverflow.com/questions/2727167/getting-all-filenames-in-a-directory-with-node-js) – razlebe

回答

1

這是我的第一槍。

fs = require('fs'); 

function getDirectoryFiles(directory, callback) { 
    fs.readdir(directory, function(err, files) { 
    files.forEach(function(file){ 
     fs.stat(directory + '/' + file, function(err, stats) { 
     if(stats.isFile()) { 
      callback(directory + '/' + file); 
     } 
     if(stats.isDirectory()) { 
      getDirectoryFiles(directory + '/' + file, callback); 
     } 
     }); 
    }); 
    }); 
} 

getDirectoryFiles('.', function(file_with_path) { 
    console.log(file_with_path); 
}); 

當然,而不是在回調處理函數,你可以在一個全局數組推值console.log

+0

這對我來說是最有價值的答案!謝謝你,先生! –

0

退房loaddir https://npmjs.org/package/loaddir

npm install loaddir

loaddir = require('loaddir') 

    allJavascripts = [] 
    loaddir({ 
    path: __dirname + '/public/javascripts', 
    callback: function(){ allJavascripts.push(this.relativePath + this.baseName); } 
    }) 

可以使用fileName,而不是baseName如果你需要擴展爲好。

2

您可以用node-dir module的文件的方法很容易做到這一點:

安裝模塊

npm install node-dir 

那麼代碼很簡單,只要

var dir = require('node-dir'); 

dir.files(__dirname, function(err, files) { 
    if (err) throw err; 
    console.log(files); 
}); 

這將通過所有的遞歸子目錄和結果將是一組文件路徑。

+0

謝謝,它工作得很好。 –