Czy jest coś wbudowanego, System.IO.Path
co daje mi tylko ścieżkę do pliku?
Na przykład, jeśli mam string
@ "c: \ webserver \ public \ myCompany \ configs \ promo.xml",
czy jest jakaś metoda BCL, która mi da
„c: \ webserver \ public \ myCompany \ configs \”?
promo.xml
oznacza on plik czy katalog o tej samej nazwie. Prawdopodobnie dlategoPath.GetDirectoryName()
jest zaimplementowany tak prosto i po prostu obcina ostatni segment lub usuwa ukośnik, jeśli taki istnieje.Odpowiedzi:
Path.GetDirectoryName()
... ale musisz wiedzieć, że ścieżka, którą do niej podajesz, zawiera nazwę pliku; po prostu usuwa ostatni bit ze ścieżki, niezależnie od tego, czy jest to nazwa pliku, czy nazwa katalogu (tak naprawdę nie ma pojęcia, który).Możesz najpierw zweryfikować, testując
File.Exists()
i / lubDirectory.Exists()
na swojej drodze, aby sprawdzić, czy musisz zadzwonićPath.GetDirectoryName
źródło
File.Exists()
. Rzeczywiście, przynosi raczej efekt przeciwny do zamierzonego w przypadku, gdy powodem znalezienia nazwy katalogu jest jej utworzenie, jeśli jeszcze nie istnieje.System.IO
aby to zadziałało.źródło
using System.IO;
aby używać metod ścieżkiPath.GetDirectoryName()
zwraca nazwę katalogu, więc dla tego, co chcesz (z końcowym znakiem odwrotnego solidusu), możesz wywołaćPath.GetDirectoryName(filePath) + Path.DirectorySeparatorChar
.źródło
źródło
Użyj „GetParent ()” jak pokazano, działa dobrze. Dodaj sprawdzanie błędów według potrzeb.
źródło
Użyłem tego i działa dobrze:
źródło