/ / Pobierz wszystkie podkatalogi zawierające tylko pliki - c #, .net

Pobierz wszystkie podkatalogi, które zawierają tylko pliki - c #, .net

Mam ścieżkę i chcę wyświetlić listę podkatalogów, w których każdy podkatalog nie zawiera żadnego innego katalogu. (Tylko te podkatalogi, które nie zawierają folderów, ale tylko pliki).

Jakiś sprytny sposób to zrobić?

Odpowiedzi:

21 dla odpowiedzi № 1

Rozumiem, że chcesz wyświetlić podkatalogi poniżej danej ścieżki, które zawierają tylko pliki.


static IEnumerable<string> GetSubdirectoriesContainingOnlyFiles(string path)
{
return from subdirectory in Directory.GetDirectories(path, "*", SearchOption.AllDirectories)
where Directory.GetDirectories(subdirectory).Length == 0
select subdirectory;
}

16 dla odpowiedzi nr 2

DirectoryInfo

DirectoryInfo dInfo = new DirectoryInfo(<path to dir>);
DirectoryInfo[] subdirs = dInfo.GetDirectories();

1 dla odpowiedzi nr 3

Możesz użyć Directory.GetDirectories metoda.

Nie jestem jednak pewien, czy poprawnie zrozumiałem twoje pytanie ... czy możesz to wyjaśnić?


1 dla odpowiedzi nr 4

Oparty na odpowiedzi Havarda, ale nieco krótszy (i może nieco łatwiejszy do odczytania, ponieważ używa !Subdirs.Any() zamiast Subdirs.Length == 0):

static IEnumerable<string> GetSubdirectoriesContainingOnlyFiles(string path)
{
return Directory.GetDirectories(path, "*", SearchOption.AllDirectories)
.Where( subdir => !Directory.GetDirectories(subdir).Any() );
}

Należy również pamiętać, że to wymaga using System.Linq; do pracy, ponieważ używa języka zapytań LINQ. (I oczywiście using System.IO; dla Directory klasa :))