2010-03-11 24 views
2

var fileOpen = new OpenFileDialog(); var clickedOk = fichierOuvre.ShowDialog(); if (! ((Bool) clickedOk)) return;Comprendre un booléen sur DirectoryInfo.Exists

var path = fileOpen.FileName; 
var diPath = new DirectoryInfo(path); 
var fiPath = new FileInfo(path); 

Debug.WriteLine(diPath.Exists); 

Je me demande simplement pourquoi diPath.Exists est faux dans ce cas? Puisque l'utilisateur a sélectionné un fichier, le répertoire doit exister !? et il le fait ...

J'ai utilisé un travail autour en utilisant Directory.Exists(fiPath.DirectoryName) mais il semble étrange que ce qui précède ne fonctionne pas, et légèrement irritant pour avoir besoin de cette autre var juste pour vérifier quelque chose que je sais qu'il existe, et devrait juste être en mesure d'utiliser le diPath. Quel est le problème? Par ailleurs, sur un sujet connexe, disons que j'ai un répertoire pour un répertoire C: \ random \ spot \ ici pourquoi n'y a-t-il pas de méthode pour obtenir cette chaîne "C: \ random \ spot \ here" il me semble que je peux seulement obtenir le parent "spot" ou le nom "ici". Peut-être que j'ai raté quelque chose.

Merci,

Répondre

6

Il y a un fichier appelé path mais il n'y a pas répertoire appelé chemin.

var diPath = new DirectoryInfo(Path.GetDirectoryName(path)); 

est probablement ce que vous voulez.

1

Vous incluez le nom de fichier dans le "chemin", et en tant que tel, le chemin sera un nœud feuille (c'est-à-dire un fichier) et non un répertoire (nœud de branche). La gestion des fichiers/chemins Windows est assez littérale à propos de ce genre de choses.

Comme mentionné précédemment, DirectoryInfo ou Path.GetDirectoryName() est probablement ce que vous voulez utiliser si vous travaillez avec des chemins.