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
Yorum Gönder