当我们应该使用file.write(…)而不是file.createWriteStream(…)?

file.write(fd,...)file.createWriteStream(...)什么file.createWriteStream(...)

例如:在下面的代码中,两个片段做同样的事情。

 var http = require('http'); var fs = require('fs'); http.createServer(function(request, response) { var newFile = fs.createWriteStream('newFile.txt'); request.pipe(newFile); });, var http = require('http'); var fs = require('fs'); http.createServer(function(request, response) { var data = ""; request.on('data', function(chunk) { data += chunk.toString(); }); reuqest.on('end', function() { fs.write('newFile.txt', chunk); }); }); 

我很困惑,哪一个更好? 谢谢。

当你处理二进制数据时,前一种方法比较好。 它将把请求stream直接传送到指定的文件。 同样使用这种方法,您将不必处理传入数据量较大时可能出现的内存问题。

第二种方法适用于只处理文本stream和字符编码的场景。 如果传入的数据是某些图像,pdf等的一部分,那么您将收到缓冲区数据,第二种方法将无法正常工作。 此外,根据Node文档 ,在同一个文件上多次使用fs.write并不等待callback是不安全的,并build议使用fs.write