web-dev-qa-db-fra.com

Extraire un chemin depuis OpenFileDialog chemin/nom de fichier

J'écris un petit utilitaire qui commence par la sélection d'un fichier, puis je dois sélectionner un dossier. Je voudrais placer par défaut le dossier à l'emplacement du fichier sélectionné.

OpenFileDialog.FileName renvoie chemin complet & nom de fichier - ce que je veux, c'est obtenir uniquement la partie chemin (sans nom de fichier), afin que je puisse l'utiliser comme dossier initial sélectionné

    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)
    {
       ...
    }

Existe-t-il des méthodes .NET pour cela, ou dois-je utiliser regex, split, trim, etc ??

71
Kevin Haines

Utilisez le Path class from System.IO . Il contient des appels utiles pour manipuler les chemins de fichiers, y compris GetDirectoryName qui fait ce que vous voulez, en retournant la partie répertoire du chemin de fichier.

L'utilisation est simple.

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

que dis-tu de ça:

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

Vous pouvez utiliser FolderBrowserDialog au lieu de FileDialog et obtenir le chemin à partir du résultat OK.

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

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

Voici le moyen simple de le faire! 

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