Node.JS - 4 - IO/Dosya işlemleri


Node.JS’ in özellikle asenkron çalışma mantığı sayesinde IO işlemlerinde oldukça performanslı olduğunu dile getirmiştik. Bu noktada File işlemine örnek vermeden geçmek olmaz. Bu amaçla IO işlemler için kullanılacak olan modülden ve aslında dolaylı olarak bir modülün nasıl ekleneceğinden bahsetmenin de zamanı geldi.

Dosya işlemleri:

IO işlemleri için kullanacağımız modül “fs” bir modül eklenirken öncelikle “var” anahtar kelimesi ile parametre tanımı yapılıyor ve “require(“<modül-adı>”)” komutu ile kullanılacak modül bilgisini bu değişkene atama yapıyoruz. Öncelikle “Deneme.txt” isimli bir  dosyamızın var olduğunu düşünerek aşağıdaki şekilde kodumuzu düzenleyerek, çalıştırdığımızda içeriğini ekrana bastırıyor olacağız.



"example005.js" olarakta dosyaya yazmak için aşağıdaki komut kullanılabilir:

//Dosyamizin içerisine yazimizi yaziyoruz
fs.writeFileSync("D:\\TEMP\\nodejs\\" + process.argv[2],process.argv[3])

Bu adıma kadar, dosya işlemlerinde  “readFileSync(<dosya-adı>)” ve  “writeFileSync(<dosya-adı>, <metin>)” komutlarını yani Senkron işleyen method ları kullandık. Böylece işlemlerin sırası ile birbirlerini beklemelerini sağlamış olduk. Ancak şunu düşünmek lazım çok büyük bir dosyayı okumaya kalktığınızda, işlem devam ediyor uyarısı bastırmak istiyor iseniz, size yardımcı olmayacaktır. Bu noktada asenkron bir yapı için  “readFile(<dosya-adı>)” ve  “writeFile(<dosya-adı>, <metin>)” method larını kullanabiliriz ancak hata almamak adına dikkat edilmesi gereken hususlar olacak bu noktaları bir örnek ile ele alalım.

example006.js

Example006 da büyük dosyalar için hata alınacaktır zira işlemleri asenkron yapık ancak, akışta işlemler bir birini beklemediği için dosya okunmadan satır hesabına başlar isek patlayacaktır.


Example007 de ise, Satır hesaplama işlemine okuma işlemi sonrası tetiklenecek bir fonksiyon ile devam edilecek hale getiriyoruz, bu şekilde oluşabilecek olası gap leri engelleyerek daha sağlıklı bir asenkron yapı kurulabilir. Bu noktada sürekli iç içe callback yani event tanımlama işlemi sıkıntı yaratacak ve okunurluğu bozacaktır, Bu tip durumlardan kaçınmak için ise aşağıdaki 2 örnekte göstermeye çalıştığımız gibi, modül oluşturmak şeklinde ilenebilir. Böylece olması gereken hali aşağıdaki şekilde olacaktır.

example007.js





Yorumlar

Yazılar

Kotlin - 1 - Giriş

Genesys Nuance-ASR Entegrasyonu Port Kullanımı

Kotlin - 5 - Dönüşler ve Atlamalar (Returns and Jumps)