2016-05-25 3 views
-4

Итак, сейчас у меня есть список каталогов, которые я хотел бы получить с помощью шаблона регулярных выражений и фильтрации linq. Что мне нужно, чтобы получить папки, содержащие определенное количество каталогов, и пропустить те, у кого нет 1, и как проверить, пуста ли моя информация в каталоге или нет. Какие-либо предложения ? так что это то, что у меня естьПолучить папки, которые содержат определенное количество каталогов

DirectoryInfo root = new DirectoryInfo (@ "C: \ Users \ jphillips \ Desktop \ test"); var dirs = new List(); dirs = root.GetDirectories ("*", SearchOption.AllDirectories) .Where (d => reg.IsMatch (d.Name)). Где ((d =>! D.FullName.EndsWith ("TESTS"))) .Where (d => d.GetFiles(). Length> 3) .ToList();

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

кто-то может сказать мне, как отфильтровать его здесь, а также то, что делает * означает в ПОЛУЧИТЬ функции каталогов

+2

Можете ли вы опубликовать код, который у вас есть? – Blorgbeard

+0

Я предлагаю вам отправиться самостоятельно и опубликовать свой код, когда вы застрянете. Это сделает ваш вопрос на 100% лучше. Мы лучше всего помогаем, когда вы задаете вопрос хорошего качества. – Enigmativity

ответ

0

Heres отправной точкой я полагаю:

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)); 
} 

Следующая строка получает количество каталогов в указанной папке, вы можете проверить, соответствует ли оно 0 или тому, что когда-либо необходимо для проверки на

subFolders[i].GetDirectories().Length 

Также вы можете использовать следующие, чтобы получить количество файлов в подкаталоге

subFolders[i].GetFiles().Length 

Если оба subFolders[i].GetDirectories().Length и subFolders[i].GetFiles().Length являются 0, то можно предположить, подкаталог пуст. Вы должны использовать этот код в качестве шаблона, чтобы делать то, что хотите.

+0

Это то, что я получил до сих пор: DirectoryInfo root = new DirectoryInfo (@ "\\ visrep01 \ REPORTS"); var dirs = new Список (); dirs = root.GetDirectories ("*", SearchOption.AllDirectories) .Where (d => reg.IsMatch (d.Name)). Где ((d =>! D.FullName.EndsWith ("TESTS"))) .Where (d => d.GetDirectories(). Length> = 0) .Where (d => d.GetFiles(). Length> 3) .ToList(); может кто-то сказать мне отсюда, где я могу пойти – PhillipsJP

+0

моей новой проблемой является то, что я получил все каталоги и подкаталоги в формате, который я хочу с помощью вышеуказанного поиска, но на самом деле я не хочу, потому что он ничего не возвращает, я думаю, что это из-за несанкционированного доступа получите каталоги любых решений, чтобы обойти это. – PhillipsJP

+0

Ну, если у вас нет доступа, я не могу там сделать, вам придется поговорить с вашим сетевым администратором, но вам также нужно будет обосновать, почему вам нужен доступ, –

Смежные вопросы