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.
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:
data/masukan
data/masukan/laporan-2024.txt
laporan-2024.txt
.txt
laporan-2024
data/masukan
FalseMari kita bedah baris demi baris:
Path.Combine("data", "masukan"): menyisipkan pemisah di antara dua nama folder; pada Linux hasilnyadata/masukan.Path.Combine(folder, "laporan-2024.txt"): hasilCombineberupa string path biasa, sehingga hasilnya boleh digabung lagi dengan bagian berikutnya.Path.GetFileName(path): mengembalikan bagian setelah pemisah terakhir, yaitulaporan-2024.txt.Path.GetExtension(path): mengembalikan.txtlengkap dengan titiknya.GetFileNameWithoutExtensiondanGetDirectoryName: keduanya memotong dari arah berbeda; yang pertama menghilangkan ekstensi, yang kedua mengambil bagian folder.Path.HasExtension("laporan"): mengembalikanFalsekarena string tersebut tidak memuat titik.