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.