Nodejs dosya varlığını kontrol etmek?
Nodejs’de dosyaların veya klasörlerin varlığı ile ilgili senkron veya asenkron olmak üzere iki şekilde kontrol mekanizması mevcuttur. Nodejs’nin farklı sürümlerinde farklı komutlarla olmak üzere bir kaç şekilde dosya veya klasör varlığını kontrol edebiliriz. Bu durumda kullanacağınız Nodejs sürümüne dikkat edin.
Tarihe göre sıralanmış komut dizimi şu şekildedir.
- 2010’da kadar;
(stat / statSync veya lstat / lstatSync) - 2012 Eylül ayı güncellemesi;
(exists / existsSync) - 2015 Şubat ayı güncellemesi;
(stat / statSync veya lstat/lstatSync) - 2015 Aralık ayı güncellemesi;
fs.access(yol, fs.F_OK, function(){}) / fs.accessSync(yol, fs.F_OK), ancak dosya/klasör bulunamadığı taktirde hata döndüreceğini unutmayın. fs.stat kullanmadan varlığı kontrol etmeniz gerekiyorsa fs.access komutunu kullanmanızı tavsiye ederiz.
lstatSync / lstat size bir şeyin var olup olmadığını söyler. Bu bir dosya da olabilir, veya sembolik bir bağlantı vs.. olabilir. Örneğin bir dizinin var olup olmadığını kontrol etmek isterseniz;
// Senkron kullanımı var fs = require('fs'); // klasör varlığını kontrol etmek try{ stats = fs.lstatSync('yol/klasor'); if(stats.isDirectory()){ // evet bu klasör mevcut. } }catch(error){ // hata oluştu. } //Asenkron kullanımı fs.lstat('yol/klasor', function(err, stats){ if(!err && stats.isDirectory()){ // evet bu klasör mevcut. }else{ // klasör yok veya hata oluştu. } })
aynı şekilde bir klasör yerine dosya kontrol etmek isteseydik isDirectory() yerine isFile() eklerdik. Yine bir aygıt kontrol etmek istersek isBlockDevice() vs.. eklerdik. Girişin hiç olmaması durumunda kod bloğunun hataya (catch) düşeceğini unutmayın.
Burada kullanabileceğiniz kontroller şu şekildir;
- isFile
- isDirectory
- isBlockDevice
- isCharacterDevice
- isFIFO
- isSocket
- isSymbolicLink (sadece fs.lstat ile kullanılır).
dosya veya klasör varlığını başka şekillerde de kontrol edebiliriz. Örneğin;
// Senkron kullanımı var fs = require('fs'); // klasör varlığını kontrol etmek try{ fs.accessSync('yol/klasor', fs.F_OK); // evet bu klasör mevcut }catch(error){ // hata oluştu. } //Asenkron kullanımı fs.access('yol/klasor', fs.F_OK, function(err){ if(!err){ // evet bu klasör mevcut. }else{ // klasör yok veya hata oluştu. } })
son olarak hala kullanımı devam eden fs.existsSync() ile de kontrol edebiliriz.
var fs = require('fs'); if(fs.existsSync(yol)){ // yol mevcut }
Bazı Örnekler
var fs = require('fs'); function fileExists(filePath){ try{ return fs.statSync(filePath).isFile(); } catch (err){ return false; } }
function statPath(path) { try { return fs.statSync(path); } catch (ex) {} return false; } /** Kullanımı var exist = statPath('/path/to/your/file.js'); if(exist && exist.isFile()) { // dosya var. } */
Cevapla
Want to join the discussion?Feel free to contribute!