[英]Trouble listing files with fs.readdir() in Node.js
我正在通過“ 了解你的Node.js多贏! ”研討會,但我在練習5上遇到了麻煩。它要求你Create a program that prints a list of files in a given directory, filtered by the extension of the files.
我在目錄中,通過files
,它包含的JavaScript,Ruby和純文本文件的分類。 它應該是console.log()
每個擴展名為.js
文件。
var fs = require('fs');
function indexDirectory(directory) {
fs.readdir(directory, function(err, files) {
for (var i in files) {
if (i.indexOf('.js') != -1) {
console.log(files[i]);
}
}
});
}
indexDirectory('files');
當我使用node program.js
運行它時,我當前的代碼不會輸出任何內容。 我錯過了一些異步原理嗎? 我錯誤地使用了回調嗎? 任何幫助,將不勝感激 :)
files
是數組,你應該使用forEach
而不是for .. in
var fs = require('fs');
function indexDirectory(directory) {
fs.readdir(directory, function(err, files) {
files.forEach(function (file) {
if (file.indexOf('.js') != -1) {
console.log(file);
}
});
});
}
indexDirectory('files');
此代碼的另一個問題是它將打印帶有“.json”擴展名的文件。 因此,您應該使用正則表達式而不是indexOf。 像這樣的東西:
var matches = new RegExp(".js$").test(files[i]);
if (matches) {
console.log(files[i]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.