NodeJS fs Modülü

Merhabalar, Node.JS derslerimize kaldığımız yerden devam ediyoruz. Bu dersimizde Node.JS ile dosya işlemlerini anlatacağım. Hadi başlayalım !
İlk olarak dosya işlemleri yapabilmek için file system anlamına gelen fs modülünü kullanacağız. Tabi öncelikle sayfamızda bu modülü çağırmamız gerekiyor. Bu modül Node.JS kurulumuyla beraber geldiği için tekrardan kuruluma ihtiyacımız yok.
const fs = require('fs');
Modülümüzü çağırdık, şimdi sırasıyla işlemlerimizi yazalım;
Dosya Okuma: Dosyayı asenkron olarak okumak için readFile() metodu kullanılıyor ve bu metod okunacak dosyanın yolu, kodlama ve okuma modu ve callback fonksiyon olmak üzere 3 parametre alıyor.
callback fonksiyonu ise okuma işlemi esnasında çıkabilecek hataları tutan err ve okunan veriyi tutan data olmak üzere 2 parametre alıyor. Dosya okumanın örneği şöyle olsun;
fs.readFile('merhaba.txt', 'utf-8', (err, data) => {
if (err) throw err;
console.log(data);
});
Senkron Dosya Okuma: Az önceki örneğimizde dosyayı asenkron olarak okuduk, yani dosya okunurken aynı zamanda ön planda işlemlerinize devam edebilirsiniz fakat öyle zamanlar olur ki, senkron olarak okumanız gerekebilir. Yani dosya tamamen okunana kadar beklemeniz, bu arada herhangi bir işlem yapmamanız gerekebilir. Node.JS’de fs modülü ile senkron dosya okumak için readFileSync() fonksiyonu kullanılıyor ve bu fonksiyon dosya yolu ve kodlama modu olmak üzere 2 parametre alıyor, yani callback fonksiyonu yok. Geriye de okunan veriyi döndürüyor, e hata olursa da çat diye patlıyor 🙂
const data = fs.readFileSync('merhaba.txt', 'utf-8');
Dosyaya Yazma: Dosyaya veri yazmak için de writeFile() fonksiyonu kullanılıyor ve bu fonksiyon yazılacak dosyanın yolu, yazılacak veri, kodlama modu ve yazma işlemi tamamlanınca çalıştırılacak callback fonksiyon olmak üzere 4 parametre almakta. Ayrıca belirtilen yolda dosya yoksa önce oluşturur sonra yazar, dosya varsa içeriğini temizler ve fonksiyonda belirttiğimiz veriyi yazar. Bir örnek yazalım;
fs.writeFile('merhaba.txt', 'Node.JS Dosyaya Yazma Örneği', 'utf-8', (err, data) => {
if (err) throw err;
console.log('Dosyaya Başarıyla Yazıldı !');
});
E bu fonksiyon ile dosya yoksa önce oluşturur dedik, bu güzel bir şey. Çünkü biz dosyanın var olup olmadığını kontrol etmiyoruz, o kendisi hallediyor. Fakat dosya varsa içeriğini temizliyor dedik, bu duruma göre kötü bir şey olabilir. Yani biz dosyanın içeriği kalsın, bizim belirttiğimiz veri dosyaya eklensin, dosyanın içeriği temizlenmesin istersek, bunun için appendFile() fonksiyonunu kullanacağız. Bu fonksiyon ise writeFile() fonksiyonuyla aynı parametreleri alıyor. Yani yazılacak dosyanın yolu, yazılacak veri, kodlama modu ve yazma işlemi tamamlanınca çalıştırılacak olan callback fonksiyonu. Örneğimiz de şöyle olsun;
fs.appendFile('merhaba.txt', 'Node.JS Dosyaya Ekleme Örneği', 'utf-8', (err, data) => {
if (err) throw err;
console.log('Dosyaya Başarıyla Yazıldı !');
});
Dosya Açma: Dosya açma diye neden ayrı bişey yapıyoruz diyenler olabilir, ki zamanında bende sorgulamıştım. Ama kullanacağınız bazı fonksiyonlar açık bir dosya isteyebilir, ki açtığımız dosya işlenmek üzere belleğe (RAM) yükleniyor ve biz kapattığımız anda da bellekten kaldırılıyor. Dosyayı açmak için dosyanın yolu, açma tipi ve açtıktan sonra çalıştırılacak olan callback fonksiyonu olmak üzere 3 parametre istiyor. Açma tipi derken de, dosyayı okumak için mi yazmak için mi açtığımızı belirtiyoruz. Yazma işlemi için w, okuma işlemi için r kullanıyoruz.
fs.open('dosya.txt', 'w', (err, data) => {
if (err) throw err;
console.log('Dosya Açıldı ve Emrinize Amade');
});
Dosya Silme: Dosyayı silmek için unlink() fonksiyonu kullanılıyor ve dosyayı asenkron olarak silme işlemi yapılır. Yani silme işlemi devam ederken siz başka işlemleri yapmaya devam edebilirsiniz. Fonksiyonu kullanabilmek için ise dosya yolu ve silme işlemi tamamlanınca çalıştırılacak olan callback fonksiyonu olmak üzere 2 parametre göndermemiz gerekiyor.
fs.unlink('dosya.txt', (err) => {
if (err) throw err;
console.log('Dosya Silindi');
});
Klasör Oluşturma: Klasör oluşturmak için mkdir() fonksiyonu kullanılıyor. Asenkron olarak oluşturma yapılır ve klasör yolu ve callback fonksiyonu olmak üzere 2 parametre alıyor.
fs.mkdir('klasör', () => console.log('Klasör Oluşturuldu !'));
Klasör Silme: Asenkron olarak klasör silmek için rmdir() fonksiyonu kullanılır. Bu fonksiyon silinecek klasör yolu ve callback fonksiyonu olmak üzere 2 parametre almaktadır.
fs.rmdir('klasör', () => console.log('Klasör Başarıyla Silindi !'));
Klasör İçeriğini Listeleme: Klasör içeriğini listemekten kasıt, klasör içerisinde bulunan tüm dosyaları bulup bi listeye atmaktan bahsediyorum. Yani örneğin kullanıcının seçtiği bi yoldaki tüm dosyaları bulup, sunucuya yükleme işlemi yapabilirsiniz. Bunun için readdir() fonksiyonunu kullanacağız ve parametre olarakta klasör yolu ve callback fonksiyonu göndereceğiz. Klasör içerisindeki dosyalar callback fonksiyonunun tuttuğu files nesnesi içerisinde tutuluyor. Neden callback fonksiyonu derseniz de, klasördeki dosyaları listeleme işlemi asenkron olarak yapılıyor. Yani arka planda klasör içerisindeki dosyalar listelenirken ön tarafta siz istediğiniz işlemi yapabiliyorsunuz. Dolayısıyla kod akışı değişeceği için elde edilen dosyalar, işlem tamamlandıktan sonra çalıştırılan callback fonksiyonuna yükleniyor. Örneğin klasörde bulunan tüm dosyaları ekrana bastıralım;
fs.readdir('klasör', (err, files) => {
if (err) throw err;
for (var file in files)
console.log(file);
});
Eveett bu yazımızda bu kadardı, dosya işlemleriyle ilgili neredeyse tüm fonksiyonları söyledik. Bence güzel bir yazı oldu 🙂 Tüm Node.JS derslerimize buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.