TuZaKK 1
TuZaKK
Mt2Hizmet 1
Mt2Hizmet
Agora Metin2 1
Agora Metin2
Bvural41 1
Bvural41
kaptanmikro1 1
kaptanmikro1
R 1
Roksam
[DEV]AB 1
[DEV]AB
Sevdamsın 1
Sevdamsın
farkmt2official 1
farkmt2official
emirhanHCL 1
emirhanHCL
Scarlet 1
Scarlet
Hikaye Ekle

[NODE JS] path.parse ile Yol Bilgisini Parcalama

  • Konuyu başlatan Konuyu başlatan Silverhand
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 1
  • Görüntüleme Görüntüleme 11

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!

nodejs.png


[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!
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst