2017-02-26 61 views
1

file.write(fd,...)file.createWriteStream(...)有什麼區別?當我們應該使用file.write(...)而不是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

當你處理二進制數據時,前一種方法更好。它會將請求流直接傳送到指定的文件。同樣使用這種方法,您不必處理傳入數據量較大時可能會出現的內存問題。

第二種方法適用於只處理文本流和字符編碼已知的場景。如果傳入的數據是某些圖像,pdf等的一部分,那麼您將接收緩衝區數據,第二種方法將無法正常工作。另外,根據Node docs,在同一文件上多次使用fs.write而不等待回調並且建議使用fs.createWriteStream是不安全的。

相關問題