Modifier: Bonne nouvelle ! À partir de Node.js 8.0.0 readable.destroy
est officiellement disponible : https://nodejs.org/api/stream.html#stream_readable_destroy_error
ReadStream.destroy
Vous pouvez appeler la fonction ReadStream.destroy à tout moment.
var fs = require("fs");
var readStream = fs.createReadStream("lines.txt");
readStream
.on("data", function(chunk) {
console.log(chunk);
readStream.destroy();
})
.on("end", function() {
// Ceci peut ne pas être appelé puisque nous détruisons le flux
// la première fois que l'événement "data" est reçu
console.log("Toutes les données du fichier ont été lues");
})
.on("close", function(err) {
console.log("Le flux a été détruit et le fichier a été fermé");
});
La fonction publique ReadStream.destroy
n'est pas documentée (Node.js v0.12.2) mais vous pouvez consulter le code source sur GitHub (commit du 5 octobre 2012).
La fonction destroy
marque internalement l'instance de ReadStream
comme détruite et appelle la fonction close
pour libérer le fichier.
Vous pouvez écouter l'événement close pour savoir exactement quand le fichier est fermé. L'événement end ne se déclenchera pas sauf si les données sont complètement consommées.
Notez que les fonctions destroy
(et close
) sont propres à fs.ReadStream. Elles ne font pas partie de l'interface générique stream.readable.