Мое намерение - написать файл для определенного интервала. Создал узел writeStream вне интервала и попытался использовать тот же поток внутри интервала для записи содержимого в файл. Я ожидаю, что контент будет перезаписан, но он начал добавляться. Вот один подход
Подход I:
var fs = require('fs');
var ans = ["first","second","third","fourth","fifth"];
var i =0;
var stream = fs.createWriteStream('stats.log.info',{flags:'w'});
var writeInterval = setInterval(function(){
var data =ans[i%ans.length] ;
if(data.length == 0){
console.log("Failure in ");
}
stream.on('error', function(err){
console.log("error in creating a stream "+err);
clearInterval(writeInterval);
stream.destroy();
return;
});
stream.write(data);
i++;
},2000);
Затем я переместил созданный поток в интервал, который заканчивается перезаписью содержимого файла.
Подход I: созданный поток, помещенный в интервал
var fs = require('fs');
var ans = ["first","second","third","fourth","fifth"];
var i =0;
var writeInterval = setInterval(function(){
var stream = fs.createWriteStream('stats.log.info',{flags:'w'});
var data =ans[i%ans.length] ;
if(data.length == 0){
console.log("Failure in ");
}
stream.on('error', function(err){
console.log("error in creating a stream "+err);
clearInterval(writeInterval);
stream.destroy();
return;
});
stream.write(data);
i++;
},2000);
Мне интересно, как я могу использовать один созданный поток для перезаписи содержимого файла. Я попробовал другой подход, используя стандартную запись файла Node. Он отлично работает, чтобы перезаписать контент. Но он включает fopen и fclose внутри интервала, что каждый раз кажется довольно дорогостоящими операциями. Вот образец
Подход II:
var fs = require('fs');
var ans = ["first","second","third","fourth","fifth"];
var i =0;
var writeInterval = setInterval(function(){
var data =ans[i%ans.length] ;
if(data.length == 0){
console.log("Failure in ");
}
var fopen_write = fs.open("curr.log", 'w', function(err, fd){
var buf = new Buffer(data, 'utf8');
fs.write(fd, buf, 0, buf.length, null, function(err) {
if (err) throw 'error writing file: ' + err;
fs.close(fd, function() {
console.log('wrote the file successfully');
});
});
})
i++;
},2000);
Предложения по оценке подходов с лучшими характеристиками действительно полезны.
Я ценю ваше время и усилия!