file.write(fd,...)
和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);
});
});
我觉得哪个更好??感谢。
答案 0 :(得分:1)
当您处理二进制数据时,前一种方法更好。它会将请求流直接传递给指定的文件。同样使用这种方法,您将不必处理传入数据量很大时可能出现的内存问题。
第二种方法适用于人们只处理文本流并且已知字符编码的情况。如果传入的数据是某些图像,pdf等的一部分,那么您将收到缓冲区数据,第二种方法将无法正常工作。另外,根据Node docs,在同一个文件上多次使用fs.write
而不等待回调是不安全的,建议使用fs.createWriteStream
。