我收到错误:
EMFILE, open <filename>
我不认为这与打开过多文件的情况相同。
当我运行ulimit
时,输出为:unlimited
,所以我不认为这是问题所在。
我创建了许多子目录,当创建子目录时,我会在fs.exists
fs.writeFile
来检查目录是否实际存在
有什么问题?
编辑:ulimit -n输出1024
答案 0 :(得分:1)
你应该尝试graceful-fs:https://github.com/isaacs/node-graceful-fs
正如描述所说,它将open和readdir调用队列化,如果有太多文件描述符的EMFILE错误,一旦关闭就会重试它们。
这里有一个很好的解释:http://blog.izs.me/post/56827866110/wtf-is-emfile-and-why-does-it-happen-to-me
答案 1 :(得分:1)
你不应该使用writeFile甚至appendFile,它们都会向每个追加文件打开文件。
使用流更好。您可以管理自己的文件句柄并在需要时关闭它:)
var stream = fs.createWriteStream("append.txt", {flags:'a'});
stream.write("data");
stream.end;