NodeJS按行读取目录中的所有文件

时间:2014-07-17 02:56:45

标签: node.js

我是NodeJS的新手,我试图读取给定目录中的所有文件,然后使用下面的代码逐行打印出结果

 var fs=require('fs'),fsf = require('fs'),lazy = require('lazy');
 var fr;
 var dir = '/path/to/dir';
 fs.readdir(dir,function(err,files){
  if (err) throw err;
   files.forEach(function(file){
    console.log(file);
    fr = fsf.createReadStream(file);
      //console.log(fr);
    new lazy(fr).lines.forEach(function(line){
        console.log(line.toString());   
    });
  });

我收到以下错误

无法调用未定义的方法'toString' 任何指针都会非常感激!

1 个答案:

答案 0 :(得分:0)

更新: - 实际上有两个问题

  1. (主要)单个文件中的空白行导致了此问题 异常。
  2. 隐藏文件被程序接收。
  3. 更正了两者,这里是重构代码

    var fs=require('fs'),lazy = require('lazy');
    var fr;
    var dir = '/path/to/dir';
    fs.readdir(dir,function(err,files){    //Get a listing of all the files in the dir
      if (err) throw err;
      files.forEach(function(file){
        if(file.search('\\.md') != -1) {    //Only read markdown files
          console.log(file);
          fr = fs.createReadStream(file);
          new lazy(fr).lines.forEach(function(line){
            if (typeof line != 'undefined'){    // Skip blank lines within the files
              if ((line.toString().search('\\+') != -1)||(line.toString().search('@') != -1)){
                console.log(line.toString());
              }
            }
          });
        }
      });
    });
    

    代码似乎很好,并且正在与其他目录和其他计算机一起使用。经过一些调查后,目录中的.DS_Store隐藏文件似乎存在问题。我在OSX 10.9.4的Mac上尝试这个。我不是百分百肯定,但是现在这似乎是错误的可能原因。 谢谢!