3

I have to write a lot of files and I'm wondering which method suits best. The data are text.

I'm a bit concerned on how I can close properly the operation. createWriteStream has a end() method or fs.close(), which closes the stream; writeFile has no such method if I well-understood, which may be inefficient after a long batch of write. All the examples of fs.writeFile never mention fs.close().

4

2 回答 2

3

writeFile doesn't need a close method because it opens/writes/closes the file all in a single call.

The main criteria do decide between the two is not the presence/need of an explicit close but rather: does the data fit easily in RAM? If it does, then writeFile is certainly simpler to use (and potentially a slightly bit faster); else, you better use streams and write data in chunks.

于 2013-10-10T09:18:57.563 回答
2

fs.close() is actually used to close a file descriptor optained from fs.open() or similar functions. What you might be looking at it is writeable.close(). fs.write() will fully write and finish a file in a single call.

For writing streams, you must close them when finished writing unless you use readable.pipe(). The main difference between fs.createReadStream() and fs.writeFile() is that one accepts a stream and one accepts a in-memory resource. Therefore if you have a large file, it is best to use a stream so only small chunks are loading into memory at one time.

于 2013-10-10T13:23:25.033 回答