0
votes

Recherche dans tous les dossiers d'un sous-dossier pour la présence d'un fichier spécifié

J'ai un répertoire principal qui a un groupe de sous-répertoires, chacun de ces sous-répertoires devrait avoir un fichier App.config et je souhaite la valider. Ce fichier APP.Config peut être n'importe quel endroit d'un sous-répertoire donné. Dès ma mise en œuvre ci-dessous, je peux vérifier si ce fichier de configuration est immédiatement à l'intérieur du sous-répertoire donné (par exemple, si le répertoire SUB est "Dossier" Je vérifierai si l'app.confg est disponible dans le dossier de chemin \ app.config) mais Ça ne parvient pas à vérifier si l'app.config est dans n'importe quel endroit du présent répertoire donné.

Dans le sens, le fichier app.config peut être à l'intérieur d'une sous-directrice d'un répertoire sous-titre inital donné. Basciquement n'importe où à l'intérieur du sous-répertoire donné P>

est là que je peux implémenter ce comportement? p>

private void ValidateFiles(string path)
        {



            string[] filesindirectory = Directory.GetDirectories(path);
            foreach (var subDir in filesindirectory)
            {
                string pathToConfigFile = Path.Combine(subDir, "app.config");
                if (File.Exists(pathToConfigFile))
                {

                }

                else
                {

                }
            }
        } 


2 commentaires

Utilisez Récursion pour rechercher tous les sous-répertoires


Je pense que ce que vous cherchez est un moyen de faire ierrer à travers un arbre de répertoire. Voir ce lien docs.microsoft.com/en-us/dotnet/cshaarp/programming-Guide/...


3 Réponses :


0
votes
  1. Utilisation de la récursion Si votre chemin contient des sous-répertoires à l'intérieur des sous-répertoires. xxx

0 commentaires

2
votes

Vous pouvez utiliser la méthode répertoire.getfiles pour trouver votre fichier à l'intérieur d'un dossier et dans le paramètre SearchOption Passez le paramètre SearchOption.Alldirecties à Recherche dans tous les sous-répertoires.

Voici l'échantillon de code pour référence: xxx

dans la variable des fichiersInindirectory, vous aurez maintenant tous les noms de fichier (qui est app.config dans notre cas) avec le chemin.
Pour plus de référence: Microsoft Doc


2 commentaires

De cette réponse, je peux obtenir tous les chemins des dossiers existants qui ont le fichier, y a-t-il un moyen de mettre en œuvre de telle sorte que je puisse mettre en œuvre afin que les noms de tous les annuaires qui n'ont pas de fichier de configuration ne peuvent pas être imprimés.


Processus de vide statique privé (chemin de chaîne) {var filtresInindirectory = nouvelle liste (répertoire.getfiles (chemin, ". ", searchoption.Alldirecties) .Où (x => path.getextension (x )! = ".config")); variables annuendres = nouveau hashset (); foreach (fichier var in fichierindirectory) {répertoireNames.add (path.getdirectoryName (fichier)); } foreach (var Dir dans les noms de répertoires) {console.writeline (dir); }}



0
votes
var LstfileDirectory = Directory.GetFiles(path, "app.config",
    SearchOption.AllDirectories)
    .ToList();

LstfileDirectory.ForEach(Item => Console.WriteLine(Item)); 

0 commentaires