Jaki jest najprostszy sposób na uzyskanie katalogu, w którym znajduje się plik? Używam tego do ustawienia katalogu roboczego.
string filename = @"C:\MyDirectory\MyFile.bat";
W tym przykładzie powinienem pobrać „C: \ MyDirectory”.
Jaki jest najprostszy sposób na uzyskanie katalogu, w którym znajduje się plik? Używam tego do ustawienia katalogu roboczego.
string filename = @"C:\MyDirectory\MyFile.bat";
W tym przykładzie powinienem pobrać „C: \ MyDirectory”.
Odpowiedzi:
Jeśli zdecydowanie masz absolutną ścieżkę, użyj Path.GetDirectoryName(path)
.
Jeśli możesz uzyskać tylko nazwę względną, użyj new FileInfo(path).Directory.FullName
.
Należy pamiętać, że Path
i FileInfo
oba znajdują się w przestrzeni nazw System.IO
.
new FileInfo(path).Directory.FullName
powinien działać w obu przypadkach.
Możesz użyć System.IO.Path.GetDirectory(filename)
lub zmienić ścieżkę w FileInfo
i użyć FileInfo.Directory
.
Jeśli robisz inne rzeczy ze ścieżką, FileInfo
może to mieć zalety.
Możesz użyć Path.GetDirectoryName
i po prostu podać nazwę pliku.
Jeśli pracujesz z FileInfo
obiektem, istnieje prosty sposób na wyodrębnienie string
reprezentacji pełnej ścieżki katalogu za pośrednictwem DirectoryName
właściwości.
Opis FileInfo.DirectoryName
nieruchomości za pośrednictwem MSDN:
Pobiera ciąg reprezentujący pełną ścieżkę katalogu.
Przykładowe użycie:
string filename = @"C:\MyDirectory\MyFile.bat";
FileInfo fileInfo = new FileInfo(filename);
string directoryFullPath = fileInfo.DirectoryName; // contains "C:\MyDirectory"
Link do dokumentacji MSDN .
Możesz pobrać bieżącą ścieżkę aplikacji, używając:
string AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString();
Powodzenia!
Możesz użyć Path.GetFullPath
w większości przypadków. Ale jeśli chcesz uzyskać ścieżkę również w przypadku, gdy nazwa pliku jest względnie zlokalizowana, możesz użyć poniższej ogólnej metody:
string GetPath(string filePath)
{
return Path.GetDirectoryName(Path.GetFullPath(filePath))
}
Na przykład:
GetPath("C:\Temp\Filename.txt")
powrót "C:\Temp\"
GetPath("Filename.txt")
wrócić current working directory
jak"C:\Temp\"
W moim przypadku musiałem znaleźć nazwę katalogu pełnej ścieżki (katalogu), więc po prostu:
var dirName = path.Split('\\').Last();
"C:\MyDirectory"
a nie potrzebuje MyDirectory
. Porada dotycząca stosowania metod manipulacji ciągiem jest ryzykowna, istnieje wiele pułapek, a raczej należy stosować Path
metody dedykowane .
Path.GetDirectoryName (Context.Parameters [„assemblypath”])
Path.GetDirectoryName
jest wspomniany w wielu innych odpowiedziach (w tym w odpowiedziach zaakceptowanych)
@"C:\MyDirectory\MyFile.bat"