it-swarm.com.de

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

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 ich "C:\MyDirectory" erhalten.

483
Even Mien

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 und FileInfo beide im Namespace System.IO enthalten sind.

773
Jon Skeet
System.IO.Path.GetDirectoryName(filename)
58
Cherian
Path.GetDirectoryName(filename);
21
Grzenio

Sie können System.IO.Path.GetDirectory(filename) verwenden oder den Pfad in FileInfo umwandeln und FileInfo.Directory verwenden.

Wenn Sie andere Dinge mit dem Pfad tun, kann das FileInfo Vorteile haben.

12
Reed Copsey

Sie können Path.GetDirectoryName verwenden und einfach den Dateinamen eingeben.

MSDN Link

10
Brandon

Verwenden Sie den folgenden Code, um den Ordnerpfad abzurufen

Path.GetDirectoryName(filename);

Dies gibt "C:\MyDirectory" in Ihrem Fall zurück

9
thejustv

Sie können den aktuellen Anwendungspfad abrufen, indem Sie Folgendes verwenden:

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

Viel Glück!

5
David Castro

Wenn Sie mit einem FileInfo -Objekt arbeiten, können Sie auf einfache Weise eine string -Darstellung des vollständigen Verzeichnispfads über die DirectoryName -Eigenschaft extrahieren.

Beschreibung der Eigenschaft FileInfo.DirectoryName über MSDN:

Ruft eine Zeichenfolge ab, die den vollständigen Pfad des Verzeichnisses darstellt.

Beispielnutzung:

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

Link zu MSDN-Dokumentation .

4
Derek W

Zuerst müssen Sie den System.IO-Namespace verwenden. Dann;

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

oder

string newPath = Path.GetFullPath(openFileDialog1.FileName));
0
Umut D.

In den meisten Fällen können Sie Path.GetFullPath verwenden. Wenn Sie den Pfad aber auch erhalten möchten, wenn der Dateiname relativ lokalisiert 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 like "C:\Temp\"

0
Minh Nguyen

Nur für den Fall, dass jemand anderes es braucht, war das, was ich für meinen relativen Pfad verwendet habe:

string rootPath = "MyRootDir/MyFolder1/MyFolder2/myFile.pdf";
while (!string.IsNullOrWhiteSpace(Path.GetDirectoryName(rootPath))) 
{
    rootPath = Path.GetDirectoryName(rootPath);
} 
Console.WriteLine(rootPath); //Will print: "MyRootDir"
0
Sal

In meinem Fall musste ich den Verzeichnisnamen eines vollständigen Pfads (eines Verzeichnisses) finden, also habe ich einfach Folgendes getan:

var dirName = path.Split('\\').Last();
0
Amir No-Family