Node.js'de Yazılabilir Akışlarla Nasıl Çalışılır?

Node Js De Yazilabilir Akislarla Nasil Calisilir



Veriler ağ üzerinden kaynak ve hedef yerler arasında akışlar halinde aktarılır. Gönderici tarafı kaynak olarak adlandırılır ve alıcı tarafı hedef akış olarak temsil edilir. Bu Akışları kullanarak, metin biçimindeki veya ses veya video biçimindeki veriler, minimum veri sızıntısı veya kaybı olasılığıyla gönderilebilir ve alınabilir.

Bu kılavuz, Node.js'de yazılabilir akışlarla çalışmayı açıklamaktadır.

Node.js'de Yazılabilir Akışlarla Nasıl Çalışılır?

yazılabilir ” akışı dosyaya yeni veri eklemek için kullanılabilir veya başka bir rastgele akışın içeriğini yerleştirebilir. Veri dönüştürme veya yerleştirme çoğunlukla “ boru() ' yöntem. Bu yöntem, verilerin çarpışma olasılığını azaltırken içeriği dönüştürme ve atama işlemini daha kolay hale getirir.







Sözdizimi



Yazılabilir akış aşağıdaki yöntem çağrılarak oluşturulur:



fs. createWriteStream ( 'hedefDosya.ext' ) ;

Yukarıdaki söz diziminde “ creatWriteStream() ” içe aktarılan nesne tarafından çağrılır” fs ” modülüne parametre olarak verinin yazılacağı dosya aktarılır.





Node.js'de yazılabilir akışlara ilişkin birkaç örneğe göz atalım.

Örnek 1: Yazılabilir Akış Kullanarak Başka Bir Dosyanın İçeriğini Yazma

Aşağıdaki örnekte, rastgele dosya okunabilir Akış üzerinden gönderilmekte ve ardından bu dosya içeriği yazılabilir Akışta bulunan başka bir dosyaya yerleştirilmektedir:



fsObj idi = gerekmek ( 'f' ) ;

yapı veri akışı = fsObj. CreateReadStream ( 'yenidosyam1.txt' ) ;

yapı yazma Akışı = fsObj. createWriteStream ( 'yenidosyam2.txt' ) ;

veri akışı. boru ( yazma Akışı ) ;

Yukarıdaki kodun açıklaması:

  • İlk önce ' fs ” modülü içe aktarılır ve nesnesi yeni “de saklanır fsObj ” değişkeni.
  • Daha sonra “ yardımıyla fasObj ' çağır' createReadStream() ” Okunabilir bir akış oluşturmak ve seçilen okunabilir dosyayı parametre olarak geçirmek için kullanılan yöntem.
  • Daha sonra “yazılabilir akış” çağrılarak oluşturulur. createWriteStream() İçeriği sağlanan dosyaya yazma yöntemini kullanın.
  • Yukarıda çağrılan yöntemlerin sonuçlarını “ veri akışı ' Ve ' yazma Akışı ” değişkenleri sırasıyla.
  • Son olarak “” öğesini çağırın. boru() ” yöntemi ve ardından “ veri akışı ” ve “ ile liderlik ediyor yazma Akışı ' değişkenler.

Şimdi aşağıdaki komutu çalıştırarak içeren dosyayı (controlFlow.js) yürütün:

Örnek 2: “stream.write()” Yöntemini Kullanarak İçeriği Dosyaya Yazma

Bu örnekte “ yazmak() Yazılabilir Akış üzerinden mevcut olan dosya üzerine veri yazmak için ” yöntemi kullanılır:

fsObj idi = gerekmek ( 'f' ) ;
yapı httpObj = gerekmek ( 'http' ) ;

yapı yerel olarak hizmet ver = httpObj. CreateServer ( ( istek, yanıt ) => {
denemek {
yapı hücre akışı = fsObj. createWriteStream ( 'yenidosyam2.txt' ) ;
CellStream. yazmak ( 'Hedeflenen dosyaya yerleştirilecek veriler.' ) ;
CellStream. son ( ) ;
cevap. son ( 'Veri Yazılabilir Akış Yoluyla Yazılıyor' )
}
yakalamak ( hata ) {
konsol. hata ( hata ) ;
}
} ) ;
Yerel olarak servis yapın. Dinlemek ( 8080 , ( ) => {
konsol. kayıt ( 'Sunucu Localhost Bağlantı Noktası Numarasında Çalışıyor: '8080' ' )
) ;

Yukarıdaki kodun açıklaması şu şekildedir:

  • Öncelikle gerekli olanı içe aktarın fs ' Ve ' http ” modülleri ve nesnelerini “ fsObj ' Ve ' httpObj ” değişkenleri sırasıyla.
  • Daha sonra sunucu “ çağrılarak oluşturulmuştur. createServer() ” yöntemini kullanarak yeni oluşturulan bu sunucuyu “ yerel olarak hizmet ver ” değişkeni.
  • Daha sonra bir 'kullanın denemek yöntem geri çağırma işlevinin içindeki ' bloğunu kullanın ve ' createWriteStream() ' yöntemini kullanarak ' fsObj ” değişkeni.
  • İçeriğin eklenmesi gereken hedef dosyayı bu yöntem parantezinin içine iletin ve sonucu “ hücre akışı ” değişken
  • yazmak() ” yöntemini bu değişkenle kullanın ve parantez içinde hedeflenen dosyaya yazılacak sahte bir mesaj iletin.
  • “” komutunu çağırarak Akışı kapatın. son() ” yöntemini çağırın ve web sayfası üzerinden bir başarı mesajı görüntüleyin. yanıt.end() ' yöntem. Nerede ' cevap ”,“ öğesinin geri çağırma parametresidir. CreateServer ' yöntem.
  • yakalamak Oluşan hataları işlemek için ” bloğu.
  • Son olarak port numarası üzerinden sunucuyu dinleyin veya kurun. 8080 ”ve geri arama fonksiyonunun yardımıyla başarı mesajını görüntüleyin.

Oluşturulan çıktı, sağlanan metnin '' kullanılarak yazıldığını gösterir. yazmak() ' yöntem:

Örnek 3: Aynı Veriyi Birden Fazla Dosyaya Yazma

Bu örnekte, akıştan tek bir dosya “” kullanılarak okunacaktır. createReadStream() ' yöntem. Daha sonra okunan içerik “” kullanılarak birden fazla dosyaya yazılır. createWriteStream() ' Ve ' .boru() ” yöntemleri:

fsObj idi = gerekmek ( 'f' ) ;

yapı veri akışı = fsObj. CreateReadStream ( 'yenidosyam1.txt' ) ;

yapı yazmaAkışı1 = fsObj. createWriteStream ( 'yenidosyam2.txt' ) ;

yapı yazmaStream2 = fsObj. createWriteStream ( 'usecase.txt' ) ;

veri akışı. boru ( yazmaAkışı1 ) ;

veri akışı. boru ( yazmaStream2 ) ;

Yukarıdaki kod parçacığında:

  • createReadStream() ” yöntemi çağrılır ve içeriğinin okunması gereken dosya parametre olarak iletilir. Bu yöntemin sonucu “ veri akışı ” değişkeni.
  • Daha sonra “ createWriteStream() ” yöntemi çağrılır ve hedeflenen dosya onun parametresi olarak iletilir.
  • Aynı şekilde ikinci dosyanın yolu da yazılabilir bir akış olarak iletilir ve sonuçlar “ yazmaAkışı1 ' Ve ' yazmaStream2 ' değişkenler.
  • Bundan sonra “ .boru() ' yöntemi ' içinde depolanan içeriği veri akışı ' değişkeni '' değişkenine atanır yazmaAkışı1 ' Ve ' yazmaStream2 ' değişkenler.

Oluşturulan çıktı, sağlanan dosya içeriğinin akışlar üzerinden sağlanan dosyalara eklendiğini gösterir:

Bunların hepsi Node.js'de yazılabilir akışların çalışmasıyla ilgilidir.

Çözüm

Yazılabilir akışlarla çalışmak için “ createWriteStream() ”,“ aracılığıyla çağrılır fs ” modül nesnesi. İçeriğin yazılması gereken hedeflenen dosya yolu parametre olarak iletilir. İçeriği başka bir akıştan yazmak için “ .boru() ” yöntemi kullanılıyor. “ yazmak() ” yöntemi, içeriğin doğrudan hedeflenen dosyaya yazılması söz konusu olduğunda da faydalıdır. Bu yazı yazılabilir akışlarla çalışma prosedürünü göstermektedir.