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
我在这里找了很久,没有得到答案,我只是想循环读取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