public static void CheckFilesInSubDir(DirectoryInfo directory, NumberOfFiles allFiles) { if (directory.GetFiles().Any()) { foreach (var file in directory.GetFiles()) { try { long size = file.Length <= (long)FileSize.Less10 ? 10 : file.Length > (long)FileSize.Between10 && file.Length <= (long)FileSize.Between50 ? 50 : file.Length >= (long)FileSize.MoreThan100 ? 100 : 0; switch (size) { case 10: allFiles.Less10 = allFiles.Less10 + 1; break; case 50: allFiles.Between10And50 = allFiles.Between10And50 + 1; break; case 100: allFiles.MoreThan100 = allFiles.MoreThan100 + 1; break; } } catch (DirectoryNotFoundException ex) { Console.WriteLine(ex.Message); } catch (UnauthorizedAccessException UAEx) { Console.WriteLine(UAEx.Message); } catch (PathTooLongException PathEx) { Console.WriteLine(PathEx.Message); } } } }
public static void CheckAllDirectories(string directory, NumberOfFiles allFiles) { DirectoryInfo dirInfo = new DirectoryInfo(directory); if (dirInfo.Exists) { //check in current folder CheckFilesInSubDir(dirInfo, allFiles); //check in subfolders foreach (var dir in dirInfo.GetDirectories()) { /* bool error = false; if(dir.Attributes.HasFlag(FileAttributes.Hidden)) error = true; bool access = dir.GetAccessControl().AreAuditRulesProtected; access = dir.GetAccessControl().AreAccessRulesCanonical;*/ try { CheckFilesInSubDir(dir, allFiles); CheckAllDirectories(dir.FullName, allFiles); } catch (UnauthorizedAccessException UAEx) { Console.WriteLine(UAEx.Message); } catch (PathTooLongException PathEx) { Console.WriteLine(PathEx.Message); } } } return; }