Nodejs:写了很多文件:createWriteStream或writeFile?

时间:2013-10-10 08:47:55

标签: node.js file-io stream fs

我必须写很多文件,并且我想知道哪种方法最适合。数据是文本。

我有点担心如何正确关闭操作。 createWriteStream有一个end()方法或fs.close(),可以关闭流;如果我很好理解,writeFile没有这样的方法,经过长时间的写入后,这可能是低效的。 fs.writeFile的所有示例都没有提到fs.close()

2 个答案:

答案 0 :(得分:2)

writeFile不需要close方法,因为它只需一次调用即可打开/写入/关闭文件。

主要标准决定两者之间是否存在明确close的存在/需要,而是:数据是否适合RAM?如果确实如此,那么writeFile肯定更容易使用(并且可能稍微快一点);否则,您最好使用流并以块的形式写入数据。

答案 1 :(得分:1)

fs.close()实际上用于关闭从fs.open()或类似函数中选择的文件描述符。你可能正在看的是writeable.close()fs.write()将在一次通话中完全写入并完成一个文件。

对于写入流,除非使用readable.pipe(),否则必须在完成写入时关闭它们。 fs.createReadStream()fs.writeFile()之间的主要区别在于,一个接受流,一个接受内存资源。因此,如果您有一个大文件,最好使用一个流,这样一次只能将小块加载到内存中。