Türkiye'de ilk Mobil & PC Aynı Anda Metin2 Oyna. Triarchonline kalıcı ve uzun ömürlü yapısı ile 24 Temmuz'da açılıyor. | 1-99 Mobil Metin2 Triarch HEMEN TIKLA!
[NODE JS] path.parse ile Yol Bilgisini Parcalama
Selam arkadaslar, bugun path modulunun en kapsamli fonksiyonlarindan biri olan path.parse'i inceleyecegiz. Bu fonksiyon bir dosya yolunu alip parcalarina ayirir ve size bir nesne dondurur. Tek tek basename, extname, dirname cagirmak yerine tek bir cagriyla tum bilgileri alabilirsiniz. Ben bunu genelde dosya isimlerini manipule etmem gereken yerlerde kullaniyorum.
path.parse Ne Dondurur?
path.parse fonksiyonu size bes parcadan olusan bir nesne dondurur: root (kok dizin), dir (dizin yolu), base (tam dosya adi), name (uzantisiz dosya adi) ve ext (uzanti). Bu parcalarin hepsi bir araya geldiginde orijinal yolu olusturur. Tersi islem icin path.format fonksiyonunu kullanabilirsiniz, yani parcalardan tekrar yol olusturabilirsiniz.
Bu fonksiyonun en guzel yani, bir dosya yolunun her parcasina ayri ayri erisebilmeniz. Mesela sadece dosya adini degistirmek istiyorsaniz name'i degistirip geri birlestirirsiniz. Veya uzantiyi degistirmek istiyorsaniz sadece ext'i degistirirsiniz. Cok pratik bir yaklasim.
JavaScript:
const path = require('path');
// Temel kullanim - Linux yolu
console.log('=== Linux Yolu ===');
const linuxYol = '/home/user/documents/rapor.pdf';
const parsed1 = path.parse(linuxYol);
console.log(parsed1);
// {
// root: '/',
// dir: '/home/user/documents',
// base: 'rapor.pdf',
// ext: '.pdf',
// name: 'rapor'
// }
// Windows yolu
console.log('\n=== Windows Yolu ===');
const winYol = 'C:\\Users\\bbekt\\Desktop\\foto.jpg';
const parsed2 = path.parse(winYol);
console.log(parsed2);
// Relative yol
console.log('\n=== Relative Yol ===');
const relYol = 'src/utils/helper.js';
const parsed3 = path.parse(relYol);
console.log(parsed3);
// root bos olacak cunku relative yol
// Ozel durumlar
console.log('\n=== Ozel Durumlar ===');
console.log('Uzantisiz:', path.parse('/app/Makefile'));
console.log('Gizli dosya:', path.parse('/app/.gitignore'));
console.log('Cift uzanti:', path.parse('/app/data.tar.gz'));
console.log('Sadece dosya:', path.parse('index.js'));
console.log('Klasor:', path.parse('/var/log/'));
// Parcalarin iliski
console.log('\n=== Parca Iliskileri ===');
const ornek = path.parse('/home/user/proje/src/app.min.js');
console.log(`root + dir = Dizin yolu: ${ornek.dir}`);
console.log(`name + ext = base: ${ornek.name}${ornek.ext} = ${ornek.base}`);
console.log(`dir + base = Tam yol: ${path.join(ornek.dir, ornek.base)}`);
path.format ile Yol Olusturma
path.parse'in tersi olan path.format, bir nesne alip dosya yolu string'i olusturur. Bu iki fonksiyon birlikte kullanildiginda dosya yollarini manipule etmek cok kolay hale gelir. Bir dosyanin uzantisini degistirmek, adini degistirmek veya farkli bir dizine tashimak icin parse edip, degistirip, format ile geri birlestirirsiniz.
JavaScript:
const path = require('path');
// path.format ile yol olusturma
console.log('=== path.format Kullanimi ===\n');
// Sifirdan yol olusturma
const yeniYol = path.format({
dir: '/home/user/uploads',
name: 'profil_resmi',
ext: '.png'
});
console.log('Olusturulan:', yeniYol);
// Parse edip degistirip geri birlestirme
function uzantiDegistir(dosyaYolu, yeniUzanti) {
const parsed = path.parse(dosyaYolu);
parsed.base = ''; // base varsa name+ext'i ezer, temizleyelim
parsed.ext = yeniUzanti.startsWith('.') ? yeniUzanti : '.' + yeniUzanti;
return path.format(parsed);
}
console.log('\n=== Uzanti Degistirme ===');
console.log(uzantiDegistir('/img/foto.jpg', '.webp'));
console.log(uzantiDegistir('/docs/rapor.docx', '.pdf'));
console.log(uzantiDegistir('/build/app.js', '.min.js'));
// Dosya adina sonek ekleme
function sonekEkle(dosyaYolu, sonek) {
const parsed = path.parse(dosyaYolu);
parsed.base = '';
parsed.name = parsed.name + sonek;
return path.format(parsed);
}
console.log('\n=== Sonek Ekleme ===');
console.log(sonekEkle('/img/foto.jpg', '_thumb'));
console.log(sonekEkle('/css/style.css', '.min'));
console.log(sonekEkle('/data/export.csv', '_2024'));
// Toplu dosya adi donusumu
function dosyaAdiDonustur(dosyaYolu, donusturFn) {
const parsed = path.parse(dosyaYolu);
parsed.base = '';
parsed.name = donusturFn(parsed.name);
return path.format(parsed);
}
console.log('\n=== Toplu Donusum ===');
const dosyalar = [
'/img/My Photo.jpg',
'/img/Summer Vacation.png',
'/img/SCREENSHOT 2024.webp'
];
dosyalar.forEach(d => {
const yeni = dosyaAdiDonustur(d, ad =>
ad.toLowerCase().replace(/\s+/g, '-')
);
console.log(` ${path.basename(d)} -> ${path.basename(yeni)}`);
});
// Versiyon numarasi ekleme
function versiyonEkle(dosyaYolu, versiyon) {
const parsed = path.parse(dosyaYolu);
parsed.base = '';
parsed.name = `${parsed.name}.v${versiyon}`;
return path.format(parsed);
}
console.log('\n=== Versiyon Ekleme ===');
console.log(versiyonEkle('/dist/bundle.js', '2.1.0'));
console.log(versiyonEkle('/api/schema.json', '3'));
Pratik Uygulama: Dosya Yonetici
Simdi ogrendigimiz tum path fonksiyonlarini birlestiren pratik bir ornek yapalim. Bu ornek bir dosya yonetici sinifi olusturuyor ve dosya yollarini parse ederek cesitli islemler yapiyor. Tecrübeme gore boyle bir utility sinifi her projede ise yariyor. Bir kere yazin, her yerde kullanin.
path.parse ve path.format ikilisi gercekten guclu araclar. Ozellikle build sistemleri, dosya donusturuculeri ve batch islemler icin vazgecilmez. Benim tavsiyem, path modulunun tum fonksiyonlarini iyi ogrenmeniz. Cunku dosya yolu manipulasyonu Node.js'te neredeyse her gun karsiniza cikacak bir islem. Herneyse, bu konuyu da bitirdik. Simdiki bolumde callback pattern'ine geciyoruz!
Emeğiniz ve katkınız için teşekkür ederiz!
Konunuz gerekli incelemelerden geçerek onaylandı. Topluluğumuza katkılarınızın devamını bekliyoruz.
İyi forumlar!
Konunuz gerekli incelemelerden geçerek onaylandı. Topluluğumuza katkılarınızın devamını bekliyoruz.
İyi forumlar!

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 3
- Görüntüleme
- 451
- Cevaplar
- 13
- Görüntüleme
- 1K
- Cevaplar
- 8
- Görüntüleme
- 709
- Cevaplar
- 2
- Görüntüleme
- 275
- Cevaplar
- 1
- Görüntüleme
- 247
