我试图从目录中递归读取文件并尝试以下代码。
readDirFiles.list('/dir/subDir/', 'utf8', function (err, filenames) {
if (err) return console.dir(err);
//filenames haslist of all files and dirs in '/dir/subDir/'
if(filenames){
filenames.forEach(function(filename) {
//filename is full path of file and array also contains sub directory paths
try {
console.log('Opening file '+ filename);
fileContents = fs.readFileSync(filename, 'utf8');
console.log(md5(fileContents));
} catch (err) {
console.log(err);
}
}, this);
}
});
在
filenames
中,我有所有文件和目录的列表,我只想从中读取文件并跳过目录。当我尝试使用fs.readFileSync(filename, 'utf8')
读取文件时,它给了我两个错误1.
{ [Error: EISDIR: illegal operation on a directory, read] errno: -21, code: 'EISDIR', syscall: 'read' }
这是可以的,因为它试图读取目录而不是文件。2.
[ReferenceError: fileContents is not defined]
当我传递正确的文件路径和正确的扩展名时,不知道为什么会出现此错误。 最佳答案
您的脚本的顶部可能带有'use strict'
,并且由于未正确声明fileContents
,因此出现了参考错误。
要解决此问题,请使用适当的变量声明:
let fileContents = fs.readFileSync(filename, 'utf8');