String path sering dirakit dari beberapa bagian: nama folder, subfolder, lalu nama berkas. Menggabungkannya dengan tanda / secara manual membuat kode terikat pada satu sistem operasi, sebab Windows memakai garis miring terbalik. Class Path di System.IO menyelesaikan masalah ini dengan method statis yang menghormati konvensi sistem operasi tempat program berjalan.

Path.Combine dan Pemisah Otomatis #

Path.Combine menggabungkan potongan-potongan path dan menyisipkan karakter pemisah yang tepat secara otomatis. Pada Linux, hasilnya memakai /, sedangkan pada Windows hasilnya memakai \. Karena pemisah dipilih saat program berjalan, satu kode sumber yang sama dapat berjalan di kedua platform tanpa perubahan apa pun.

Membedah Path Menjadi Bagian-bagian #

Class Path juga menyediakan method untuk membedah path yang sudah jadi. GetFileName mengembalikan nama berkas lengkap dengan ekstensinya, GetExtension mengembalikan ekstensi saja, dan GetDirectoryName mengembalikan bagian folder. Semua method ini bekerja murni pada string, sehingga tidak ada berkas yang dibuka ataupun diperiksa keberadaannya.

csharp
string folder = Path.Combine("data", "masukan");
string path = Path.Combine(folder, "laporan-2024.txt");

Console.WriteLine(folder);
Console.WriteLine(path);
Console.WriteLine(Path.GetFileName(path));
Console.WriteLine(Path.GetExtension(path));
Console.WriteLine(Path.GetFileNameWithoutExtension(path));
Console.WriteLine(Path.GetDirectoryName(path));
Console.WriteLine(Path.HasExtension("laporan"));

Output yang Dihasilkan:

text
data/masukan
data/masukan/laporan-2024.txt
laporan-2024.txt
.txt
laporan-2024
data/masukan
False

Mari kita bedah baris demi baris:

  1. Path.Combine("data", "masukan"): menyisipkan pemisah di antara dua nama folder; pada Linux hasilnya data/masukan.
  2. Path.Combine(folder, "laporan-2024.txt"): hasil Combine berupa string path biasa, sehingga hasilnya boleh digabung lagi dengan bagian berikutnya.
  3. Path.GetFileName(path): mengembalikan bagian setelah pemisah terakhir, yaitu laporan-2024.txt.
  4. Path.GetExtension(path): mengembalikan .txt lengkap dengan titiknya.
  5. GetFileNameWithoutExtension dan GetDirectoryName: keduanya memotong dari arah berbeda; yang pertama menghilangkan ekstensi, yang kedua mengambil bagian folder.
  6. Path.HasExtension("laporan"): mengembalikan False karena string tersebut tidak memuat titik.