新手,请教几个问题,fs模块,写入文件
刚开始学习node
//对整数补零,凑位
var fs = require("fs");
function PrefixInteger(num, n) {
return (Array(n).join(0) + num).slice(-n);
}
//将数值写入文件
for(var i=010000;i<=319999;i++)
{
var num = PrefixInteger(i,6);
console.log(num);
fs.appendFile('num.txt',num+'\n',function(err){
if(err)
console.log(err);
console.log( num+ "success!");
});
}
问题一:
输出的都是 319999 success! 是因为回调函数的原因嘛?
问题二:
num.txt文件里只有 004096 到 008179 ?为什么?不应该是从010000开始吗?
问题三:
Error: EMFILE: too many open files, open ‘num.txt’
我这样写,哪里不对,为什么会报错?
7 回复
1, for 先于任一回调被执行前就已经循环完成,所以回调输出时全部得到的是 num 的最后值。 2, 010000 字面量指示这个是八进制的一万,转成十进制中就是4096,0x10000代表是这十六进制的一万。你要按十进制的一万请把前面的0去掉。 3, 因为 for 是先执行完,你这个代码相当在一瞬间打开 319999 - 4096 个文件。由于操作系统的文件描述符都是有限的,所以会出错。