在 Node.js 中使用 fs.readdir() 列出文件时遇到问题

Trouble listing files with fs.readdir() in Node.js

本文关键字:文件 问题 遇到 readdir js Node fs      更新时间:2023-09-26

我正在通过"学习节点.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]);
}