Node.js Dosya Yazma Yöntemleri: createWriteStream vs writeFileSync
Node.js ile dosya yazmak için birçok yol bulunmaktadır. Bunlardan en popüler ikisi fs.createWriteStream ve fs.writeFileSync‘tir. Bu makalede, her iki yöntemin özelliklerini karşılaştırarak, hangi senaryoda hangisinin daha uygun olduğunu açıklayacağım. Öncelikle, her iki fonksiyonun da temel işlevine bir bakalım.
fs.writeFileSync: Senkron Dosya Yazma
fs.writeFileSync, dosyaya veri yazmak için senkron bir yöntemdir. Bu, kodun dosya yazma işlemi tamamlanana kadar beklemesi anlamına gelir. Bu yöntem, küçük dosyalar için basit ve kullanımı kolaydır. Ancak, büyük dosyalar için performans sorunlarına yol açabilir çünkü program, dosya yazma işlemi bitene kadar bloke olur. Örneğin, büyük bir veri kümesini yazmak için writeFileSync kullanılırsa, uygulama o süre boyunca donacaktır. Bu durum kullanıcı deneyimini olumsuz etkiler.
const fs = require('fs');
fs.writeFileSync('dosya.txt', 'Bu bir test dosyasıdır.');
fs.createWriteStream: Asenkron Dosya Yazma
fs.createWriteStream ise asenkron bir yöntemdir. Bu, kodun dosya yazma işlemi devam ederken diğer işlemlere devam edebileceği anlamına gelir. Büyük dosyalar veya yüksek veri hacmi için mükemmel bir seçimdir. Bunun nedeni, işlemin arka planda gerçekleşmesi ve uygulamanın bloke olmamasıdır. Veri, akış halinde yazılır, yani her seferinde tüm veriyi belleğe yükleme ihtiyacı yoktur. Bu da performans açısından büyük bir avantajdır. Yine de, hata yönetimi daha karmaşık olabilir.
const fs = require('fs');
const stream = fs.createWriteStream('dosya.txt');
stream.write('Bu bir test dosyasıdır.\n');
stream.write('İkinci satır eklendi.\n');
stream.end();
stream.on('finish', () => {
console.log('Dosya yazma işlemi tamamlandı!');
});
stream.on('error', (err) => {
console.error('Dosya yazma hatası:', err);
});
createWriteStream ve writeFileSync Arasındaki Karşılaştırma
Aşağıdaki tablo, iki yöntemi daha ayrıntılı olarak karşılaştırmaktadır:
| Özellik | fs.writeFileSync |
fs.createWriteStream |
|---|---|---|
| Senkron/Asenkron | Senkron | Asenkron |
| Performans (Büyük Dosyalar) | Düşük | Yüksek |
| Kullanım Kolaylığı | Yüksek | Düşük (hata yönetimi daha karmaşık) |
| Bloklama | Bloklayıcı | Bloklamayan |
| Uygun kullanım alanı | Küçük dosyalar | Büyük dosyalar, yüksek veri hacmi |
Özetle, küçük dosyalar için fs.writeFileSync kullanmak daha kolaydır. Ancak, büyük dosyalar veya performansın kritik olduğu durumlarda fs.createWriteStream tercih edilmelidir. Unutmayın ki asenkron işlemler, hata yönetimini daha dikkatli düşünmenizi gerektirir.
Daha fazla bilgi için web sitemi ziyaret edebilirsiniz. Ayrıca, Node.js dökümantasyonuna da göz atabilirsiniz. Node.js fs.WriteStream dökümantasyonu bu konuda size yardımcı olacaktır.
#Etiketler: Node.js, dosya yazma, createWriteStream, writeFileSync, asenkron, senkron, performans, Node.js tutorial, JavaScript, programlama, büyük dosyalar, küçük dosyalar, fs, hata yönetimi
