簡體   English   中英

在Node.js中使用fs.readdir()列出文件時遇到問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM