【问题标题】:When we should use file.write(...) instead of file.createWriteStream(...)?我们什么时候应该使用 file.write(...) 而不是 file.createWriteStream(...)?
【发布时间】:2017-07-16 20:48:06
【问题描述】:

file.write(fd,...)file.createWriteStream(...) 有什么区别?

例如:在下面的代码中,两个 sn-ps 都在做同样的事情。

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

我很困惑哪个更好?!谢谢。

【问题讨论】:

    标签: javascript node.js file fs


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-01-25
      • 2011-01-07
      • 2018-07-22
      • 1970-01-01
      • 2021-09-07
      • 2016-08-09
      • 2011-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多