fs.readFileSync - Error: EMFILE, too many open files 'D:\Workspace\some.json'

fs.readFileSync - Error: EMFILE, too many open files 'D:\Workspace\some.json'

我在这里找了很久,没有得到答案,我只是想循环读取4000个json文件,然后再做点什么,

try {
  data = JSON.parse(fs.readFileSync(file));
} catch (err) {
  console.error(err);
  next();
  return;
}

这么简单的问题,为什么我找不到答案? 我试过了graceful-fs,还是遇到了同样的问题。

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

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

var Filequeue = require('filequeue');

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

fq.readdir('/path/to/files/', function(err, files) { 如果(错误){ 抛出错误;enter code here } files.forEach(function(file) { fq.readFile('/path/to/files/' + file, function(err, data) {在此处输入代码` // 做一些除了崩溃之外的事情 } 确保你在这里安装了 filequeue npm。

最终使用 readFile 并放弃 openFileSync 看起来像 "sync" 但为什么不呢??

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

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