Was ist der einfachste Weg, um das Verzeichnis zu erhalten, in dem sich eine Datei befindet? Ich benutze dies, um ein Arbeitsverzeichnis festzulegen.
string filename = @"C:\MyDirectory\MyFile.bat";
In diesem Beispiel sollte "C: \ MyDirectory" angezeigt werden.
@"C:\MyDirectory\MyFile.bat"
Antworten:
Wenn Sie definitiv einen absoluten Pfad haben, verwenden Sie
Path.GetDirectoryName(path)
.Wenn Sie möglicherweise nur einen relativen Namen erhalten, verwenden Sie
new FileInfo(path).Directory.FullName
.Beachten Sie, dass
Path
undFileInfo
beide im Namespace gefunden werdenSystem.IO
.quelle
new FileInfo(path).Directory.FullName
sollte in beiden Fällen funktionieren.quelle
quelle
Sie können
System.IO.Path.GetDirectory(filename)
den Pfad verwenden oder in einen verwandelnFileInfo
und verwendenFileInfo.Directory
.Wenn Sie andere Dinge mit dem Pfad tun,
FileInfo
kann dies Vorteile haben.quelle
Verwenden Sie den unten angegebenen Code, um den Ordnerpfad abzurufen
Dies gibt in Ihrem Fall "C: \ MyDirectory" zurück
quelle
Sie können
Path.GetDirectoryName
den Dateinamen verwenden und einfach übergeben.MSDN Link
quelle
Wenn Sie mit einem
FileInfo
Objekt arbeiten, gibt es eine einfache Möglichkeit, einestring
Darstellung des vollständigen Pfads des Verzeichnisses über dieDirectoryName
Eigenschaft zu extrahieren .Beschreibung der
FileInfo.DirectoryName
Eigenschaft über MSDN:Beispielnutzung:
Link zur MSDN-Dokumentation .
quelle
Sie können den aktuellen Anwendungspfad abrufen, indem Sie:
Viel Glück!
quelle
Zunächst müssen Sie den System.IO-Namespace verwenden. Dann;
oder
quelle
Sie können
Path.GetFullPath
für den größten Teil des Falles verwenden. Wenn Sie den Pfad jedoch auch dann erhalten möchten, wenn sich der Dateiname relativ befindet, können Sie die folgende generische Methode verwenden:Zum Beispiel:
GetPath("C:\Temp\Filename.txt")
Rückkehr"C:\Temp\"
GetPath("Filename.txt")
kehre zurückcurrent working directory
wie"C:\Temp\"
quelle
In meinem Fall musste ich den Verzeichnisnamen eines vollständigen Pfads (eines Verzeichnisses) finden, also tat ich einfach:
quelle
"C:\MyDirectory"
und nichtMyDirectory
. Der Rat, String-Manipulationsmethoden zu verwenden, ist riskant, es gibt viele Fallen, verwenden Sie lieber dediziertePath
Methoden.Path.GetDirectoryName (Context.Parameters ["Assemblypfad"])
quelle
Path.GetDirectoryName
wird in vielen anderen Antworten erwähnt (einschließlich akzeptierter Antwort)