2016-05-25 4 views
-4

Donc maintenant j'ai une liste de répertoires que je voulais par un modèle regex et un filtrage linq. Ce dont j'ai besoin d'un moyen d'obtenir des dossiers qui contiennent un certain nombre de répertoires et ignorer ceux sans 1 et comment vérifier si les informations de mon répertoire sont vides ou non. Aucune suggestion ? donc c'est ce que j'ai jusqu'à présentObtenir les dossiers qui contiennent un certain nombre de répertoires

DirectoryInfo root = new DirectoryInfo (@ "C: \ Utilisateurs \ jphillips \ Desktop \ test"); var dirs = new Liste(); dirs = root.GetDirectories ("*", SearchOption.AllDirectories). Où (d => reg.IsMatch (d.Name)). Où ((d =>! D.FullName.EndsWith ("TESTS"))) .Where (d => d.GetFiles(). Longueur> 3) .ToList();

foreach (DirectoryInfo dir in dirs) 
    { 
    Console.WriteLine(dir.FullName); 
    } 

quelqu'un peut me dire comment filtrer d'ici, et aussi ce qui ne * signifie en get fonction Annuaires

+2

Pouvez-vous poster le code que vous avez déjà saisi? – Blorgbeard

+0

Je vous suggère d'y aller vous-même et de poster votre code lorsque vous êtes coincé. Cela rendra votre question 100% meilleure. Nous vous aidons au mieux lorsque vous posez une question de bonne qualité. – Enigmativity

Répondre

0

Heres un point de départ, je suppose:

var diProjects = new DirectoryInfo(@"C:\Projects"); 
var subFolders = diProjects.GetDirectories(); 
for (var i = 0; i < subFolders.Length; i++) 
{ 
    Console.WriteLine(string.Format("[{0}] {1}, directories = {2}, files = {3}" 
     , i 
     , subFolders[i].FullName 
     , subFolders[i].GetDirectories().Length 
     , subFolders[i].GetFiles().Length)); 
} 

La ligne suivante obtient le nombre de répertoires dans le dossier spécifié, vous pouvez vérifier pour voir si elle est égale à 0 ou quelle que soit la valeur que vous devez vérifier

subFolders[i].GetDirectories().Length 

vous pouvez également utiliser ce qui suit pour obtenir les fichiers numériques dans un sous-répertoire

subFolders[i].GetFiles().Length 

Si les deux subFolders[i].GetDirectories().Length et subFolders[i].GetFiles().Length sont 0, alors vous pouvez supposer le sous-répertoire est vide. Vous devriez être capable d'utiliser ce code comme un modèle pour faire ce que vous voulez.

+0

c'est ce que j'ai obtenu jusqu'ici: DirectoryInfo root = new DirectoryInfo (@ "\\ visrep01 \ REPORTS"); var dirs = new Liste (); dirs = root.GetDirectories ("*", SearchOption.AllDirectories). Où (d => reg.IsMatch (d.Name)). Où ((d =>! D.FullName.EndsWith ("TESTS"))) .Where (d => d.GetDirectors(). Longueur> = 0) .Where (d => d.GetFiles(). Longueur> 3) .ToList(); quelqu'un peut me dire d'ici où je peux aller – PhillipsJP

+0

mon nouveau problème est que j'ai obtenu tous les répertoires et sous-répertoires dans le format que je veux avec la recherche ci-dessus mais en fait je ne sais pas parce qu'il ne renvoie rien à cause de la merde non autoriséaccess obtenir des répertoires des solutions pour contourner cela. – PhillipsJP

+0

Eh bien, si vous n'avez pas accès, alors je ne peux pas faire grand-chose, vous devrez parler à votre administrateur réseau, mais vous devrez également justifier pourquoi vous avez besoin d'accéder ainsi –