2010-09-07 3 views
2

Je souhaite déterminer si un dossier contient un fichier, lorsque les deux sont spécifiés par un chemin.Existe-t-il une méthode permettant de déterminer si un chemin de fichier est imbriqué dans un chemin de répertoire .NET?

À première vue, cela semble simple. Vérifiez simplement si le chemin du fichier commence par le chemin du répertoire. Cependant, cette vérification naïve ne tient pas compte de plusieurs questions:

  • chemins peut être relative ou absolue
  • Les chemins peuvent utiliser le séparateur de répertoire alternatif
  • chemins peuvent utiliser boîtier incompatibles, ce qui les questions en fonction du système d'exploitation
  • différent les chemins peuvent se référer au même endroit
  • probablement un peu plus que je ne sais pas

y at-il un méthode existante dans le cadre, ou dois-je écrire le mien?

Répondre

2

Pour autant que je sache, il n'y a pas intégré dans la méthode .NET pour le faire, mais la fonction suivante doit accomplir cela en utilisant les classes FileInfo et DirectoryInfo:

public static bool FolderContainsFile(String folder, String file) 
{ 
    //Create FileInfo and DirectoryInfo objects 
    FileInfo fileInfo = new FileInfo(file); 
    DirectoryInfo dirInfo = new DirectoryInfo(folder); 

    DirectoryInfo currentDirectory = fileInfo.Directory; 
    if (dirInfo.Equals(currentDirectory)) 
     return true; 

    while (currentDirectory.Parent != null) 
    { 
     currentDirectory = currentDirectory.Parent; 

     if(currentDirectory.Equals(dirInfo) 
      return true; 
    } 

    return false; 

} 
+0

Oui, cela fonctionnera très bien (en supposant qu'il n'y a pas de méthode de framework). Modifiez la réponse pour indiquer si une méthode de structure existe ou non et je l'accepterai. –

1

Je ne sais pas si cela fonctionnera dans tous les cas, mais je suggère de regarder Path.GetFullPath.

Citation: Renvoie le chemin absolu pour la chaîne de chemin d'accès spécifiée.

+0

GetFullPath ne normalise pas boîtier . –

Questions connexes