Node.js 保存到文件时出错错误:EMFILE:打开的文件太多
我正在编写代码生成例程并写入文件,但它抛出了一个错误Node.js 保存到文件时出错错误:EMFILE:打开的文件太多,node.js,fs,Node.js,Fs,我正在编写代码生成例程并写入文件,但它抛出了一个错误 { [Error: EMFILE: too many open files, open 'C:\\file.txt'] errno: -4066, code: 'EMFILE', syscall: 'open', path: 'C:\\file.txt' } for(var i = 0;i<100000;i++) { var a = randomString.generate({ length:
{ [Error: EMFILE: too many open files, open 'C:\\file.txt']
errno: -4066,
code: 'EMFILE',
syscall: 'open',
path: 'C:\\file.txt' }
for(var i = 0;i<100000;i++) {
var a = randomString.generate({
length: 6,
capitalization: 'uppercase',
charset:'alphanumeric',
readable: true
});
console.log(a)
fs.appendFile('C:/file.txt', a + "\r\n", function (err) {
if (err) return console.log(err);
});
}
{[错误:EMFILE:打开的文件太多,请打开'C:\\file.txt']
错误号:-4066,
代码:“EMFILE”,
系统调用:“打开”,
路径:“C:\\file.txt'}
对于(var i=0;i假设您的目标是向文件追加100K个随机字符串,则不应使用fs.appendFile()
。相反,使用a将随机字符串追加到文件:
var fs = require('fs');
var out = fs.createWriteStream('C:/file.txt', { flags : 'a' });
for (var i = 0; i < 100000; i++) {
var a = randomString.generate({
length: 6,
capitalization: 'uppercase',
charset:'alphanumeric',
readable: true
});
console.log(a)
out.write(a + '\r\n', 'utf-8');
}
out.end();
var fs=require('fs');
var out=fs.createWriteStream('C:/file.txt',{flags:'a'});
对于(变量i=0;i<100000;i++){
var a=randomString.generate({
长度:6,
大写:“大写”,
字符集:'字母数字',
可读性:正确
});
控制台日志(a)
out.write(a+'\r\n',utf-8');
}
out.end();
前面的答案完全正确。只需共享另一个选项:打开文件一次,然后多次写入即可
var fd = fs.openSync('C:/Work/temp/file.txt', 'w');
for(var i = 0;i<100000;i++) {
var a = randomString.generate({
length: 6,
capitalization: 'uppercase',
charset:'alphanumeric',
readable: true
});
console.log(a)
fs.write(fd, a + "\r\n", i * 8 /* offset */, 8 /* length */, function (err) {
if (err) {
return console.log(err);
}
});
}
var fd=fs.openSync('C:/Work/temp/file.txt','w');
对于(var i=0;我不会忘记为\r\n
后缀添加额外的字节:-)