【发布时间】:2013-10-17 22:33:37
【问题描述】:
我必须写很多文件,我想知道哪种方法最适合。数据是文本。
我有点担心如何正确关闭操作。 createWriteStream 有一个end() 方法或fs.close(),用于关闭流; writeFile 没有这种方法,如果我理解的很好,经过长时间的批量写入可能效率低下。 fs.writeFile 的所有例子都没有提到fs.close()。
【问题讨论】:
我必须写很多文件,我想知道哪种方法最适合。数据是文本。
我有点担心如何正确关闭操作。 createWriteStream 有一个end() 方法或fs.close(),用于关闭流; writeFile 没有这种方法,如果我理解的很好,经过长时间的批量写入可能效率低下。 fs.writeFile 的所有例子都没有提到fs.close()。
【问题讨论】:
writeFile 不需要close 方法,因为它只需一次调用即可打开/写入/关闭文件。
决定两者之间的主要标准不是明确的close 的存在/需要,而是:数据是否容易放入RAM?如果是这样,那么writeFile 肯定更易于使用(并且可能会稍微快一点);否则,您最好使用流并以块的形式写入数据。
【讨论】:
fs.close() 实际上用于关闭从fs.open() 或类似函数中选择的文件描述符。您可能正在查看它是writeable.close()。 fs.write() 将在一次调用中完全写入并完成文件。
对于写流,你必须在写完后关闭它们,除非你使用readable.pipe()。 fs.createReadStream() 和 fs.writeFile() 之间的主要区别在于一个接受流,一个接受内存中的资源。因此,如果您有一个大文件,最好使用流,这样一次只有小块加载到内存中。
【讨论】: