fs.readFileSync - 错误:EMFILE,太多打开的文件'D:\ Workspace \ some.json'

时间:2015-07-25 16:10:58

标签: node.js fs

我在这里搜索了很长时间,但没有得到答案,我只是想在一个循环中读取4000个json文件并稍后再做一些事情,

try {
  data = JSON.parse(fs.readFileSync(file));
} catch (err) {
  console.error(err);
  next();
  return;
}
这是一个如此简单的问题,为什么我找不到答案? 我试过graceful-fs,仍然遇到同样的问题。

有什么建议吗? 非常感谢!

3 个答案:

答案 0 :(得分:2)

最后使用readFile并放弃看起来像“同步”的openFileSync,但实际上却没有?

    fs.readFile(file, function read(err, data) {})

答案 1 :(得分:1)

我遇到了同样的问题,我在浏览文件夹和上传文件。我只能通过排队文件并从队列中读取它来解决它。我最终选择了async library

答案 2 :(得分:0)

您可以使用以下选项来避免此问题....

var Filequeue = require('filequeue');

var fq = new Filequeue(200); //一次打开的最大文件数

fq.readdir('/ path / to / files /',function(err,files){     if(错误){         throw err; enter code here } files.forEach(function(file) { fq.readFile('/path/to/files/' + file, function(err, data) {在这里输入代码             //除了崩溃之外还做点什么         }     确保你在这里安装了文件队列。

相关问题