it-swarm.com.de

Pfad aus OpenFileDialog Pfad/Dateiname extrahieren

Ich schreibe ein kleines Dienstprogramm, das mit der Auswahl einer Datei beginnt, und dann muss ich einen Ordner auswählen. Ich möchte den Ordner als Standard festlegen, in dem sich die ausgewählte Datei befand.

OpenFileDialog.FileName gibt den vollständigen Pfad und Dateinamen zurück. Ich möchte nur den Pfad-Abschnitt (Dateinamen ohne Dateinamen) abrufen. Ich kann das als ersten ausgewählten Ordner verwenden. 

    private System.Windows.Forms.OpenFileDialog ofd;
    private System.Windows.Forms.FolderBrowserDialog fbd;
    ...
    if (ofd.ShowDialog() == DialogResult.OK)
    {
        string sourceFile = ofd.FileName;
        string sourceFolder = ???;
    }
    ...
    fbd.SelectedPath = sourceFolder; // set initial fbd.ShowDialog() folder
    if (fbd.ShowDialog() == DialogResult.OK)
    {
       ...
    }

Gibt es irgendwelche .NET-Methoden, um dies zu tun, oder muss ich regex, split, trim, etc verwenden?

71
Kevin Haines

Verwenden Sie die Path class aus System.IO . Es enthält nützliche Aufrufe zum Bearbeiten von Dateipfaden, einschließlich GetDirectoryName , die das tun, was Sie möchten, und den Verzeichnisabschnitt des Dateipfads zurückgeben.

Die Verwendung ist einfach.

string directoryPath = Path.GetDirectoryName(filePath);
99
Jeff Yates

wie wäre es damit:

string fullPath = ofd.FileName;
string fileName = ofd.SafeFileName;
string path = fullPath.Replace(fileName, "");
26
Jan Macháček
if (openFileDialog1.ShowDialog(this) == DialogResult.OK)
{
    strfilename = openFileDialog1.InitialDirectory + openFileDialog1.FileName;
}
12
Max

Sie können FolderBrowserDialog anstelle von FileDialog verwenden und den Pfad vom OK-Ergebnis abrufen.

FolderBrowserDialog browser = new FolderBrowserDialog();
string tempPath ="";

if (browser.ShowDialog() == DialogResult.OK)
{
  tempPath  = browser.SelectedPath; // prints path
}
6
Shaahin

Hier ist der einfache Weg, es zu tun! 

string fullPath =openFileDialog1.FileName;
string directory;
directory = fullPath.Substring(0, fullPath.LastIndexOf('\\'));
0
Abdel