648 Stimmen

Wie erhalte ich das Verzeichnis aus dem vollständigen Pfad einer Datei?

Wie kann man am einfachsten das Verzeichnis ermitteln, in dem sich eine Datei befindet? Ich verwende dies, um ein Arbeitsverzeichnis festzulegen.

string filename = @"C:\MyDirectory\MyFile.bat";

In diesem Beispiel sollte ich " C:\MyDirectory ".

3 Stimmen

Sollte das nicht ein String-Literal sein? @"C:\MyDirectory\MyFile.bat"

3 Stimmen

Möchte jemand diese Frage schützen, der das Recht dazu hat? 11 ähnliche Antworten mit der letzten von 2017

5voto

Derek W Punkte 9268

Wenn Sie mit einer FileInfo Objekt, dann gibt es eine einfache Möglichkeit, ein string Darstellung des vollständigen Pfades des Verzeichnisses über die DirectoryName Eigentum.

Beschreibung des FileInfo.DirectoryName Eigentum über MSDN:

Ruft eine Zeichenkette ab, die den vollständigen Pfad des Verzeichnisses angibt.

Beispielhafte Verwendung:

string filename = @"C:\MyDirectory\MyFile.bat";
FileInfo fileInfo = new FileInfo(filename);
string directoryFullPath = fileInfo.DirectoryName; // contains "C:\MyDirectory"

Link zum MSDN-Dokumentation .

5voto

David Castro Punkte 1417

Sie können den aktuellen Anwendungspfad mit abrufen:

string AssemblyPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location).ToString();

2voto

Umut D. Punkte 1631

Zunächst müssen Sie den Namensraum System.IO verwenden. Dann;

string filename = @"C:\MyDirectory\MyFile.bat";
string newPath = Path.GetFullPath(fileName);

oder

string newPath = Path.GetFullPath(openFileDialog1.FileName));

2voto

Minh Nguyen Punkte 1940

Sie können verwenden Path.GetFullPath für den größten Teil des Falles. Wenn Sie jedoch den Pfad auch dann erhalten möchten, wenn der Dateiname relativ weit entfernt ist, können Sie die folgende generische Methode verwenden:

string GetPath(string filePath)
{
  return Path.GetDirectoryName(Path.GetFullPath(filePath))
}

Zum Beispiel:

GetPath("C:\Temp\Filename.txt") return "C:\Temp\"

GetPath("Filename.txt") return current working directory wie "C:\Temp\"

0voto

Amir Hajiha Punkte 701

In meinem Fall musste ich den Verzeichnisnamen eines vollständigen Pfades (eines Verzeichnisses) finden, also habe ich das einfach gemacht:

var dirName = path.Split('\\').Last();

2 Stimmen

Der OP braucht "C:\MyDirectory" und nicht MyDirectory . Der Ratschlag, Methoden zur Stringmanipulation zu verwenden, ist riskant, da es viele Fallen gibt, verwenden Sie lieber spezielle Path Methoden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X