Apakah ada sesuatu yang dibangun System.IO.Path
yang memberi saya hanya filepath?
Misalnya, jika saya punya string
@ "c: \ webserver \ public \ myCompany \ configs \ promo.xml",
apakah ada metode BCL yang akan memberi saya
"c: \ webserver \ public \ myCompany \ configs \"?
promo.xml
menunjuk file atau direktori dengan nama yang sama. Yang mungkin mengapaPath.GetDirectoryName()
diimplementasikan sangat sederhana dan hanya memotong segmen terakhir, atau menghapus garis miring jika ada.Jawaban:
Path.GetDirectoryName()
... tetapi Anda perlu tahu bahwa jalur yang Anda lewati memang mengandung nama file; itu hanya menghapus bit terakhir dari path, apakah itu nama file atau nama direktori (sebenarnya tidak tahu yang mana).Anda dapat memvalidasi terlebih dahulu dengan menguji
File.Exists()
dan / atauDirectory.Exists()
di jalur Anda terlebih dahulu untuk melihat apakah Anda perlu meneleponPath.GetDirectoryName
sumber
File.Exists()
. Memang, ini agak kontra-produktif dalam kasus di mana alasan Anda untuk menemukan nama direktori adalah untuk membuatnya jika belum ada.System.IO
ini agar berfungsi.sumber
using System.IO;
untuk menggunakan metode jalurPath.GetDirectoryName()
mengembalikan nama direktori, jadi untuk apa yang Anda inginkan (dengan karakter trailing reverse solidus) Anda dapat memanggilPath.GetDirectoryName(filePath) + Path.DirectorySeparatorChar
.sumber
sumber
Gunakan 'GetParent ()' seperti yang ditunjukkan, berfungsi dengan baik. Tambahkan pengecekan kesalahan yang Anda butuhkan.
sumber
Saya menggunakan ini dan berfungsi dengan baik:
sumber