84 votes

Extraction du chemin d'accès de l'OpenFileDialog path/filename

J'écris un petit utilitaire qui commence par sélectionner un fichier, puis je dois sélectionner un dossier. J'aimerais que le dossier par défaut soit celui où se trouvait le fichier sélectionné.

OpenFileDialog.FileName renvoie le chemin d'accès et le nom de fichier complets - ce que je veux, c'est obtenir uniquement la partie chemin d'accès (sans le nom de fichier), afin de pouvoir l'utiliser comme dossier sélectionné initial.

    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 faire cela, ou dois-je utiliser des expressions rationnelles, des séparations, des coupures, etc ?

116voto

Jeff Yates Points 36725

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

L'utilisation est simple.

string directoryPath = Path.GetDirectoryName(filePath);

32voto

Jan Macháček Points 78

Que pensez-vous de ça ?

string fullPath = ofd.FileName;
string fileName = ofd.SafeFileName;
string path = fullPath.Replace(fileName, "");

18voto

Max Points 39
if (openFileDialog1.ShowDialog(this) == DialogResult.OK)
{
    strfilename = openFileDialog1.InitialDirectory + openFileDialog1.FileName;
}

10voto

Shaahin Points 106

Vous pouvez utiliser folderbrowsewrDialog et obtenir le chemin à partir du résultat OK.

string tempPath ="";

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

0voto

KaluSingh Points 11

Vous pouvez utiliser ce code simple pour obtenir le nom du fichier à partir de l'url dans openfiledialog.

OpenFileDialog dialog = new OpenFileDialog();
dialog.ShowDialog();
string path = dialog.FileName;
string pathname= Path.GetDirectoryName(path);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X