什么时候应该使用file.write(...)而不是file.createWriteStream(...)?

时间:2017-02-26 06:22:27

标签: javascript node.js file fs

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);
    });
}); 

我觉得哪个更好??感谢。

1 个答案:

答案 0 :(得分:1)

当您处理二进制数据时,前一种方法更好。它会将请求流直接传递给指定的文件。同样使用这种方法,您将不必处理传入数据量很大时可能出现的内存问题。

第二种方法适用于人们只处理文本流并且已知字符编码的情况。如果传入的数据是某些图像,pdf等的一部分,那么您将收到缓冲区数据,第二种方法将无法正常工作。另外,根据Node docs,在同一个文件上多次使用fs.write而不等待回调是不安全的,建议使用fs.createWriteStream