CodeBlanks Logo Icon CodeBlanks

Writable stream

Writable stream ile veri yazmayı öğrenirsin.

Writable stream

Writable stream veriyi programdan hedefe doğru akıtır. new Writable({ write(chunk, encoding, callback) { ... } }) ile oluşturulur. write metodu her parça için çağrılır; işlem bitince callback() çağrılır.

Veri yazmak için w.write("metin") kullanırsın. Tüm yazma bittiğinde w.end() çağrılır; bu, "finish" olayını tetikler. Örnek: const w = new Writable({ write(chunk, enc, cb) { console.log("Yazıldı: " + chunk.toString()); cb(); } });. w.write("a"); w.write("b"); w.end(); çağrıları sırayla Yazıldı: a, Yazıldı: b yazdırır; w.on("finish", ...) ile tamamlandı anını yakalarsın.

Yazma akışını bitirme

Bir Writable'a veri yazarken write çağrıları sıraya alınır. end() çağrısı "yazma bitti" anlamına gelir; bundan sonra write çağrılmaz. end()'den sonra "finish" olayı fırlar.

Önemli: write metodu içinde callback'i mutlaka çağırmalısın; aksi halde akış takılır. callback() Node.js'e "bu parça işlendi, sıradakine geç" der. Eğer yazma sırasında hata olursa callback(err) ile hata iletirsin. Bu denetim, Writable'ın arka planda parçaları sırayla güvenle işlemesini sağlar.

Uygulama Writable ile parça yaz

new Writable({ write(chunk, enc, cb) { ... } }) ile w oluştur. write içinde "Yazıldı: " + chunk.toString() yazdır ve cb() çağır. w.write("satır 1") ve w.write("satır 2") çağır, sonra w.end() yap. "finish" olayında "Tamam" yaz.

Başlangıç kodu

index.js
// Writable içe aktar ve w örneği oluştur
// buraya yaz

// "satır 1" ve "satır 2" yaz, sonra end() çağır
// buraya yaz

// "finish" olayını dinle
// buraya yaz

Örnek çözüm

index.js
const { Writable } = require("stream");
const w = new Writable({
  write(chunk, enc, cb) { console.log("Yazıldı: " + chunk.toString()); cb(); }
});
w.write("satır 1");
w.write("satır 2");
w.end();
w.on("finish", () => console.log("Tamam"));

Beklenen çıktı

Yazıldı: satır 1
Yazıldı: satır 2
Tamam

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 write metodunu tamamla

Soru
new Writable({ write(chunk, enc, cb) { console.log("Yazıldı: " + chunk.toString()); ____(); } });
Cevap
new Writable({ write(chunk, enc, cb) { console.log("Yazıldı: " + chunk.toString()); cb(); } });

Açıklama: cb() çağrılarak yazma biter.

2 Kavramı rolüne eşle

Kavram Anlamı
write(chunk) Bir parça yazar
end() Yazmayı bitirir
"finish" Yazma tamamlandı
callback() Parça işlendi sinyali

3 w.end() çağrısı ne yapar?

index.js
w.write("a"); w.end();
  • Yazmayı bitirir ve finish olayını tetikler Doğru cevap
  • Yeni bir parça yazar
  • Writable'ı siler
  • Yazmayı duraklatır ama bitirmez

Açıklama: end() yazmayı bitirir ve finish tetikler.

Orta seviye bölümündeki tüm dersler