【问题标题】:Reading all files in a directory读取目录中的所有文件
【发布时间】:2013-12-02 08:35:35
【问题描述】:

这是我现在正在使用的代码 sn-p...

/* 
    Module: inputReader.js, directoryScanner.js (included)
    Description: Basic file reader returns string of contents of a file from a set file name
    Needs to be done: Add key listener to allow for a dynamic file name
 */

// Declare node.js module dependencies from API
var fs = require('fs'), 
    wrench = require('wrench'),
    util = require('util')

// Define module to be exported as a function(s)
module.exports = {
    dirRead: function() {
        var rootfolder = './node_modules';
        var filteredfiles = [];
        var files = [];
        var fileextension = '.html';

        files = wrench.readdirSyncRecursive(rootfolder)
        for (var i = 0; i<files.length; i++) { 
            if (files[i].indexOf(fileextension) != -1) { 
                filteredfiles.push(files[i]);
            }
        }
        return filteredfiles;
    },

    fileRead: function() {
        // Call synchronous fileSystem function readFileSync on file name
        for(i = 0; i<filteredfiles.length; i++) {
            var temp = fs.readFileSync(filteredfiles[i].toString(), 'utf8')
            return temp
        }
    }
};

我正在导出一个包含 2 个不同功能的模块;第一个(readDir)读取目录及其子目录以获取文件列表,第二个(readFile)依赖于第一个(从第一个函数读取文件列表并实际遍历每个文件)。

问题是当我尝试在第二个函数 readFile 中调用过滤文件的外观时,我收到一个错误,提示过滤文件未定义。

我不知道如何解决这个问题,有人可以帮我吗? (我的猜测是范围问题)...

res.send(reader.dirRead()) and then, res.send(reader.fileRead(reader.dirRead()))

【问题讨论】:

  • 您是否尝试过确保 var 是全局变量?
  • 我将变量设置为全局变量,它在一定程度上起作用; readFile 函数正在读取路径,但它正在读取整个路径。 c:\User\Brian\documents\visualizer\express\etc.. 有没有办法让我在数组中格式化该字符串,因为将完整路径作为 readFile 方法的输入不起作用; (错误:ENOENT,没有这样的文件或目录)
  • JS文件相关的目录在哪里。您可以使用简单的引用,例如“../”作为下一个更高的目录。

标签: javascript arrays node.js scope filesystems


【解决方案1】:

filteredfiles 在 dirRead 函数中本地声明(因此对于 fileRead 函数不可见)。您必须在更高的范围内声明它,或者将其作为 fileRead 参数传递。

【讨论】:

    猜你喜欢
    • 2018-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-07
    • 2014-11-10
    • 2013-02-28
    • 2015-07-08
    相关资源
    最近更新 更多