Dosya Okuma ve İşleme için Stream ve Pipe Yöntemi

Dosya Okuma ve İşleme için Stream ve Pipe Yöntemi

Nodejs'de dosya okuma ve işleme için Stream ve Pipe yöntemleri kullanılır Bu yöntemler, özellikle büyük dosyaların okunması ve işlenmesi için uygundur Stream yöntemi, veriyi küçük parçalara bölerek bellek kullanımını azaltır ve performansı artırır Pipe yöntemi ise, bir veri kaynağından diğerine veri aktarımı yapmaya yarar ve dosya okuma ve yazma işlemlerini daha verimli hale getirir 'fscreateReadStream' yöntemi ile dosya okunabilirken, 'fscreateWriteStream' ile dosyaya yazılabilir Stream ve Pipe yöntemleri birlikte kullanıldığında, verimlilik en üst seviyeye çıkar

Dosya Okuma ve İşleme için Stream ve Pipe Yöntemi

Bu makalede, dosya okuma ve işleme işlemleri için Stream ve Pipe yöntemleri anlatılacaktır. Özellikle büyük dosyaların okunması ve işlenmesi işlemleri için kullanılan bu yöntemler sayesinde, Node.js'le verimli ve hızlı bir şekilde dosya işlemleri yapabilirsiniz.

Node.js'in 'fs' modülü kullanılarak gerçekleştirilen bu yöntemler, dosya okuma ve yazma işlemlerinin yanı sıra bir veri kaynağından diğer bir veri kaynağına aktarma işlemlerinde de oldukça verimlidir.

Dosya okuma ve yazma işlemlerinde için Stream yöntemi kullanılırken, Pipe yöntemi ise bir veri kaynağından okuma ve diğer bir veri kaynağına yazma işlemi için kullanılmaktadır. Bu iki yöntem birlikte kullanıldığında, dosya işlemleri daha verimli hale gelmektedir.


Stream Nedir?

Stream, Node.js'de dosya veya ağ bağlantısı gibi veri kaynaklarından okuma veya yazma işlemi yapmak için kullanılan bir arayüzdür. Dosya okuma veya yazma işlemlerinde büyük dosyaların işlenmesi gerektiğinde, okuma ve yazma işleminin aynı anda gerçekleştirilmesi ve bellek kullanımının azaltılması için Stream yöntemi kullanılır. Bu yöntem, verileri küçük parçalara bölerek işler ve bellekte aynı anda büyük miktarda veriyi taşımak yerine, küçük miktarlarda veri taşır. Böylece, bellek kullanımı daha verimli hale gelir ve performans artar. Stream yöntemi, büyük boyutlu dosyaların işlenmesinde harici belleğe ihtiyaç duymadan, bellek verimliliği ve performans açısından oldukça yararlıdır.


Pipe Nedir?

Pipe yöntemi, bir veri kaynağından okuma ve diğer bir veri kaynağına yazma işlemi için kullanılan bir yöntemdir. Bir veri akışından diğerine veri aktarımı yapmaya yarar. Stream yöntemiyle birlikte kullanıldığında ise dosya okuma ve yazma işlemlerini daha verimli hale getirir.

Pipe yöntemi çoğunlukla büyük boyutlu dosyaların okunup yazılması işlemlerinde kullanılır. Bu işlem sırasında veri akışları birbirleriyle bağlanır ve diğer kaynağa veri transferi sağlanır. Bu sayede uzun verilerin işlenmesi kolaylaşır ve bellek alanı daha verimli kullanılarak performans arttırılır.

Pipe yöntemi, dosya okuma ve yazma işlemlerinde büyük kolaylık sağlar. Veri akışının sürekli olarak takip edilmesi ve kontrol edilmesi işlemlerinde Pipe yöntemi önemli bir fonksiyona sahiptir. Bu yöntemi kullanarak veri akışını istediğimiz yere yönlendirerek, okuma ve yazma işlemleri kolayca gerçekleştirilebilir.


Stream ve Pipe Yöntemleri Nasıl Kullanılır?

Node.js'de dosya okuma ve işleme için kullanılan stream ve pipe yöntemleri, özellikle büyük dosyaları işlemek için tasarlanmıştır. 'fs' modülü, bu yöntemleri kullanmak için özel olarak tasarlanmıştır. Bu modül, dosya okuma ve yazma işlemleri için oldukça yararlıdır.

Bir dosya okumak için 'fs.createReadStream()' yöntemi kullanılır. Bu yöntem, bir stream oluşturur ve dosyanın okunmasına olanak sağlar. Benzer şekilde, bir dosyaya yazmak için 'fs.createWriteStream()' yöntemi kullanılır. Bu yöntem de bir stream oluşturur ve dosyanın üzerine yazma yapar.

Pipe yöntemi ise, bir stream'den diğer bir stream'e veri aktarımı yapmak için kullanılır. Bu yöntem, dosya okuma ve yazma işlemlerini daha verimli hale getirir. Örneğin, bir dosyayı okurken, aynı anda başka bir dosyaya yazmak isterseniz pipe yöntemini kullanabilirsiniz. Bu yöntemi kullanırken, dosya okuma ve yazma işlemleri aynı anda gerçekleştirilir.


Stream ve Pipe Yöntemleri Nasıl Kullanılır: Dosya Okuma

Dosya okuma işleminde, büyük dosyalarla uğraşıldığında bellek yükünü azaltmak ve bir yandan da verilerin işlenmesini sağlamak önemlidir. Bu gibi durumlarda, Stream yöntemi kullanılır. Dosya okuma işlemi için, 'fs.createReadStream()' yöntemi kullanılır. Bu yöntem, bir dosyayı okumak için bir Stream oluşturur. Bu Stream üzerinden, dosyaya erişmek ve belirli bir boyutla okumak mümkündür.

'fs.createReadStream()' yöntemi, iki adet parametre alır. İlk parametre dosya yolu, ikinci parametre ise okunacak olan dosyanın seçilen bölümünün boyutudur. Okunacak dosya bölümü belirtilmezse, dosyanın tamamı okunur. 'readableStream' adında bir Stream oluşturulduktan sonra, veri okunduğunda 'data' olayı tetiklenir ve 'console.log(chunk)' komutuyla okunan veriler yazdırılır.


Dosya Okuma: Örnek Kod

Dosya okuma işlemi için, öncelikle Node.js'in 'fs' modülü kullanılır. Bu modül, dosya okuma ve yazma işlemleri için tasarlanmıştır. Dosya okuma için fs modülünde bulunan 'createReadStream()' yöntemi kullanılır. Bu yöntem, bir dosyayı okumak için bir Stream oluşturur.

Aşağıda, dosya okuma işlemi için örnek bir kod bloğu verilmiştir:

Dosya Okuma: Örnek Kod
const fs = require('fs');
const readableStream = fs.createReadStream('example.txt');
readableStream.on('data', function(chunk) {
 console.log(chunk);
});

Yukarıdaki kod parçasında, öncelikle 'fs' modülü çağırılır. Daha sonra, 'createReadStream()' yöntemi kullanılarak 'example.txt' dosyasından bir Stream oluşturulur. Bu Stream, 'data' olayı tetiklendiğinde, 'chunk' verisini konsola yazdıracak olan bir olay dinleyicisi içerir. 'chunk', okunan verinin bir parçasıdır ve boyutu varsayılan olarak 64 KB'dır. Bu değeri değiştirmek için seçenekler sunulmuştur.

const readableStream

'const readableStream = fs.createReadStream('example.txt');' başlığı altında, Node.js'de dosya okuma işlemi için kullanılan yöntem açıklanacaktır. Bu yöntem, büyük boyutlu dosyaları işlemek için tasarlanmıştır. 'fs' modülü kullanılarak oluşturulan 'readableStream' değişkeni, 'createReadStream()' yöntemi ile bir dosya okumak için bir Stream oluşturur.

Dosya okuma işlemi sırasında, dosya parçaları 'chunk' adı verilen parçalara bölünür ve bu parçalar yine 'data' adı verilen bir olay yoluyla bir araya getirilir. Bu parçaların birleştirilmesi işlemi, JavaScript kodu ile gerçekleştirilir.

Aşağıdaki örnek kodda da görüleceği gibi, öncelikle 'fs' modülü kullanılarak okunacak dosya belirlenir. Daha sonra, bu dosya üzerindeki işlemler için bir 'chunk' ataması yapılır ve bu parça 'data' olayı ile birleştirilir. Okuma işlemi tamamlandığında, 'end' olayı tetiklenir.

Örnek Kod
const fs = require('fs');
const readableStream = fs.createReadStream('example.txt');
readableStream.on('data', function(chunk) {
    console.log(chunk);
});
readableStream.on('end', function() {
    console.log('Dosya okuma işlemi tamamlandı.');
});

Görüldüğü gibi, Node.js'de dosya okuma işlemleri oldukça basit bir şekilde gerçekleştirilebilir. Stream ve Pipe yöntemleri sayesinde, bu işlemler daha verimli hale getirilebilir ve büyük boyutlu dosyaların okunması ve işlenmesi mümkün hale gelir.

readableStream.on('data', function(chunk) {

Şimdi, dosya okuma işleminden verileri nasıl alabileceğimize bir bakalım. 'readableStream.on('data', function(chunk)' kod bloğu, verileri okumak için kullanılır. Yani, dosyadan okunan verileri almak istediğimizde bu metodu kullanacağız. Bu yöntem, okunan verilerin boyutuna bağlı olarak birkaç kez çalışabilir.

Verileri okumak için 'data' olayını kullanıyoruz. 'readableStream.on('data', function(chunk) {' kod bloğu, her veri parçası için çalıştığından, veri parçası 'chunk' olarak isimlendirilir. Veri boyutu ne kadar büyük olursa olsun, her seferinde sadece bir parça alacağımızdan, bellek verimli bir şekilde kullanılır.

Ayrıca, 'end' olayı, okuma işlemi tamamlandığında otomatik olarak çalışır ve son veri parçasının okunduğunu bize bildirir.

Dosya İçeriği: example.txt
Hello, world!
  • const fs = require('fs');
  • const readableStream = fs.createReadStream('example.txt');
  • readableStream.on('data', function(chunk) {
  •         console.log(chunk);
  • });

Yukarıdaki örnek kod, 'example.txt' dosyasından verileri okur ve her veri parçasını konsola yazdırır.

Örneğin, yukarıdaki örneği çalıştırdığımızda, konsolda aşağıdaki sonucu alırız:

Konsol Çıktısı
Hello, world!
console.log(chunk);

'fs.createReadStream()' yöntemi ile bir dosyadan okunan veriler, 'data' olayı tetiklendiğinde chunk adı verilen parçalara bölünür. 'console.log()' yöntemi ile her bir chunk yazdırılır. Aşağıdaki örnek kod, bir dosyanın okunması ve yazdırılması işlemini gerçekleştirir:

Örnek Kod:
const fs = require('fs');
const readableStream = fs.createReadStream('example.txt');
readableStream.on('data', function(chunk) {
console.log(chunk);
});
});

Dosya okuma işlemi, Node.js'de 'fs.createReadStream()' yöntemi kullanılarak gerçekleştirilir. Bu yöntem, bir dosyayı okumak için bir Stream oluşturur. Okunan her veri parçası, 'data' olayı ile aktarılır. Okunan veriler, birer parça olarak aktarılır ve sonunda tüm veriler birleştirilir. Aşağıdaki örnek kodda, 'example.txt' adlı dosya okunur ve okunan her veri parçası konsola yazdırılır:

Dosya Okuma: Örnek Kod
                const fs = require('fs');                const readableStream = fs.createReadStream('example.txt');                readableStream.on('data', function(chunk) {                    console.log(chunk);                });            

'fs.createReadStream()' yöntemi hafıza yönetimini optimize ederek büyük dosyaları daha hızlı okur. Ayrıca içerisine yazılan dosya yolu haricinde, birçok ayar seçeneği de sunar. Bu ayarlar ile dosya okuma işlemini, ihtiyacınıza uygun bir şekilde özelleştirebilirsiniz.

Bu yöntem, büyük dosyaların okunmasında büyük bir kolaylık sağlar. Okunan veriler parça parça işlenir ve hafıza yönetimi optimize edilerek işlem hızı artırılır. Ayrıca, veriyi bir arabelleğe aktararak yüksek performanslı uygulamalar geliştirebilirsiniz.

Özetle, Stream yöntemi dosya okuma işlemini optimize ederek daha hızlı ve verimli hale getirir. 'fs.createReadStream()' yöntemi ile bir Stream oluşturulur ve veriler parça parça okunarak işlenir.


Stream ve Pipe Yöntemleri Nasıl Kullanılır: Dosya Yazma

Node.js'de dosya yazma işlemi için 'fs.createWriteStream()' yöntemi kullanılır. Bu yöntem, bir dosyaya yazmak için bir Stream oluşturur. Dosyaya yazmak için 'write()' yöntemi kullanılır. Bu yönteme parametre olarak yazılacak veri verilir.

Bir örnek yazma işlemi kodu şu şekildedir:

Kod: const fs = require('fs');const writableStream = fs.createWriteStream('output.txt');writableStream.write('Hello world!');
Açıklama: 'output.txt' adlı bir dosya oluşturur ve 'writableStream' adlı bir yazma Stream'i oluşturur. Ardından, 'Hello world!' yazısını 'write()' yöntemiyle yazılan dosyaya yazdırır.

'fs.createWriteStream()' yöntemi, varsayılan olarak yazma işlemi öncesi dosyanın tüm içeriğini siler. Dosyanın içeriğini korumak istiyorsanız, 'append' parametresini kullanmanız gerekir. 'append' parametresi 'true' olarak ayarlandığında, yazma işlemi öncesi dosyanın içeriği korunur.

Bir örnek 'append' kullanımı kodu şu şekildedir:

Kod: const fs = require('fs');const writableStream = fs.createWriteStream('output.txt', { flags: 'a' });writableStream.write('Merhaba dünya!');
Açıklama: 'output.txt' adlı bir dosya oluşturur ve 'append' parametresiyle 'writableStream' adlı bir yazma Stream'i oluşturur. Ardından, 'Merhaba dünya!' yazısını 'write()' yöntemiyle dosyaya ekler.

Dosya Yazma: Örnek Kod

Dosya yazma işlemi için, 'fs.createWriteStream()' yöntemi kullanılır. Bu yöntem, bir dosyaya yazmak için bir Stream oluşturur. Aşağıdaki örnek kodda, 'output.txt' isimli bir dosyaya 'Hello world!' yazılır:

Kod:
const fs = require('fs');const writableStream = fs.createWriteStream('output.txt');writableStream.write('Hello world!');

Bu örnek kodda, 'fs' modülü require() yöntemiyle dahil edilir. Daha sonra, 'output.txt' isimli bir dosya yazmak için 'fs.createWriteStream()' yöntemi kullanarak bir Stream oluşturulur. 'Hello world!' yazısını yazmak için, oluşturulan Stream'e 'writableStream.write()' yöntemi kullanılır.

const writableStream

'const writableStream = fs.createWriteStream('output.txt');' kodu, dosya yazma işlemi için kullanılır. Bu yöntem, bir dosyaya veri yazmak için bir Stream oluşturur. Şöyle yazılır:

Kod: const fs = require('fs');const writableStream = fs.createWriteStream('output.txt');

Bu kodda, 'fs' modülü kullanılarak bir dosya oluşturulur ve 'createWriteStream' yöntemi kullanılarak output.txt adında bir dosya oluşturulur. Dosya yazma işlemi, bu yeni dosyaya veri yazmak için kullanılabilir.

Örneğin, aşağıdaki kod, 'Hello world!' yazısını output.txt dosyasına yazar:

Kod: const fs = require('fs');const writableStream = fs.createWriteStream('output.txt');writableStream.write('Hello world!');

Gördüğünüz gibi, bir yazma işlemi gerçekleştirmeden önce 'createWriteStream' yöntemi kullanarak bir Stream oluşturmanız gerekir. Ardından, yazmak istediğiniz veriyi 'write' yöntemiyle Stream'e yazabilirsiniz.

writableStream.write('Hello world!');

Dosya yazma işlemi için, 'fs.createWriteStream()' yöntemi kullanılır. Bu yöntem, bir dosyaya yazmak için bir Stream oluşturur. 'writableStream.write()' yöntemi, oluşturulan Stream üzerinden veri yazmak için kullanılır. Örnek olarak, 'Hello world!' ifadesini bir dosyaya yazmak için aşağıdaki kod kullanılabilir:

Kod: const fs = require('fs');
const writableStream = fs.createWriteStream('output.txt');
writableStream.write('Hello world!');

Bu kod, 'output.txt' adlı bir dosya oluşturacak ve bu dosyaya 'Hello world!' yazacak.


Stream ve Pipe Yöntemleri Nasıl Kullanılır: Pipe Yöntemi

Pipe Yöntemi, bir Stream'den bir başka Stream'e veri aktarımı yapmak için kullanılır. Dosya okuma ve yazma işlemlerinde, bir dosyayı okumak için Stream kullanılırken, yazmak için ise başka bir Stream oluşturulur. Ancak burada bir ara yerde veriler saklanma ihtiyacı doğar. Bu noktada 'pipe' yöntemi devreye girer ve veriler daha verimli bir şekilde aktarılır. Pipe yöntemi, bir kaynaktan gelen verileri, hedefe aktarırken bellekte bir tampon kullanarak verimli bir şekilde işlem yapar.

Bu yöntemde readStream.pipe(writeStream) şeklinde kullanılır. Bu, okunan dosyayı hedef dosyaya yazdırır. Örneğin, bir dosyadan okunan verileri tamponlayarak diğer bir dosyaya aktarırken, bu yöntem daha hızlı ve daha az bellek tüketir. 'Pipe' yöntemi dosya operasyonları için oldukça efektif bir yöntemdir ve büyük dosyaların işlenmesinde oldukça yararlıdır. Ayrıca, birden fazla Stream'e sahip olabilir ve tüm bu Stream'leri birbirine bağlayarak kullanabilirsiniz.


Pipe Yöntemi: Örnek Kod

Pipe yöntemi, bir Stream'den başka bir Stream'e veri aktarımı yapmak için kullanılır. Bu, dosya okuma ve yazma işlemlerini daha verimli hale getirir. Bu yöntemi kullanmak için Node.js'de 'fs' modülü kullanılır. Aşağıdaki örnek kodda, 'example.txt' dosyasından veri okunur ve 'output.txt' dosyasına yazılır.

const fs = require('fs');const readableStream = fs.createReadStream('example.txt');const writableStream = fs.createWriteStream('output.txt');readableStream.pipe(writableStream);

Burada, 'fs.createReadStream()' yöntemi bir 'readableStream' oluşturur ve 'fs.createWriteStream()' yöntemi bir 'writableStream' oluşturur. Daha sonra, 'readableStream' verilerini 'writableStream'e aktarmak için 'pipe()' yöntemi kullanılır.

Pipe yöntemi, veri sırasını korur ve bellek kullanımını azaltır. Bu yöntem, büyük dosyaları işlemek için özellikle yararlıdır.

const readableStream

Dosya okuma işlemi, Node.js'de 'fs.createReadStream()' yöntemi kullanılarak gerçekleştirilir. Bu yöntem, bir dosya üzerinde okuma işlemi yapmak için bir Stream oluşturur.
Okunan dosyanın içeriği, 'data' olayı ile okunabilir. Okunan her bir parça, bir veriye atıfta bulunan bir 'chunk' nesnesi olarak adlandırılır ve 'chunk' nesnesi içindeki veriler okunur.

Dosya Okuma: Örnek Kod
const fs = require('fs');const readableStream = fs.createReadStream('example.txt');readableStream.on('data', function(chunk) {    console.log(chunk);});

Yukarıdaki örnek kodda, 'fs' modülü 'require' yöntemiyle içeri aktarılır. Daha sonra, 'fs.createReadStream()' yöntemi kullanılarak 'example.txt' dosyası okunur. Okuma işlemi 'readableStream' nesnesiyle temsil edilir ve bu nesne üzerinde 'data' olayı dinlenir. 'data' olayı, dosyanın parçaları okunurken tetiklenir. Okunan her parça 'chunk' nesnesi içinde depolanır ve okunan veriler 'console.log' yöntemiyle konsola yazdırılır.

const writableStream

const writableStream = fs.createWriteStream('output.txt'); yöntemi, Node.js'de dosya yazma işlemi için kullanılır. Bu yöntem, dosyaya verileri yazmak için bir Stream oluşturur. Dosyaya yazılan veriler hemen kaydedilmez, bunun yerine önce bir tampon kullanır ve tampona veriler eklenir.

const writableStream = fs.createWriteStream('output.txt'); yöntemi, dosyanın oluşturulmasını, eğer dosya varsa üzerine yazılmasını veya eklenmesini sağlayan seçenekler sunar. Bu yöntemi kullanarak, dosyaya herhangi bir veri yazmak için 'write()' yöntemi kullanılabilir. Bu yöntem ayrıca Stream'in kapatılması veya hata durumunda işlemin durdurulması gibi işlemleri de destekleyebilir.

Dosyaya veri yazma işlemi bittiğinde, 'end()' yöntemi kullanılır. Bu yöntem, dosyada tamponlanmış herhangi bir veriyi son defa dosyaya yazar ve Stream'i kapatır. Yazdığınız dosya, bu yöntemi kullanarak kaydedilir.

Örneğin, aşağıdaki kod parçası 'output.txt' dosyasına "Hello world!" metnini yazar:

const fs = require('fs');const writableStream = fs.createWriteStream('output.txt'); writableStream.write('Hello world!');writableStream.end();

const writableStream = fs.createWriteStream('output.txt'); yönteminin kullanımı, büyük boyutlu dosyaların yazılması gerektiğinde özellikle yararlıdır. Bu yöntem, dosya yazma işlemi sırasında bellek kullanımını azaltır ve performansı artırır.

readableStream.pipe(writableStream);

'readableStream.pipe(writableStream)' yöntemi, bir veri kaynağından okuma ve diğer bir veri kaynağına yazma işlemini gerçekleştirmek için kullanılır. Bu yöntem, dosya okuma ve yazma işlemlerini daha verimli hale getirir.

Bu yöntem, dosya okuma işleminde oluşabilecek hafıza sorunlarını ortadan kaldırır, çünkü dosyanın tamamı belleğe yüklenmez. Bunun yerine, dosya, okunacak ve yazılacak veriler bloklar halinde işlenir.

Örneğin, yüzlerce MB boyutunda bir dosyadan veri okumak istediğinizi varsayalım. Bu dosyayı doğrudan belleğe yüklemek, bellek sınırlarınızı zorlayabilir. Bunun yerine, 'readableStream.pipe(writableStream)' yöntemi kullanarak dosyayı bloklar halinde işleme sürecini başlatabilirsiniz.

Aşağıdaki örnek kod, 'example.txt' dosyasındaki verilerin tamamını 'output.txt' dosyasına yazmak için 'readableStream.pipe(writableStream)' yöntemini kullanır:

Örnek Kod
const fs = require('fs');
const readableStream = fs.createReadStream('example.txt');
const writableStream = fs.createWriteStream('output.txt');
readableStream.pipe(writableStream);

Bu yöntem, dosya okuma ve yazma işlemlerinin daha verimli bir şekilde gerçekleştirilmesini sağlar ve bellek kullanımını minimize eder. Bu yöntem, büyük ölçekli dosya işleme işleri için özellikle yararlıdır.