using System.Collections.Generic;
public static void Main()
Console.WriteLine("Start Of First Test");
CheckCanWriteOutputFolders(new List<string>{"DirectoryOne","DirectoryTwo"});
Console.WriteLine("End Of First Test \n");
Console.WriteLine("Start Of Second Test");
CheckCanWriteOutputFolders(new List<string>{"DirectoryOne1","DirectoryTwo"});
Console.WriteLine("End Of Second Test \n");
Console.WriteLine("Start Of Third Test");
CheckCanWriteOutputFolders(new List<string>{"DirectoryOne1","Directory2"});
Console.WriteLine("End Of Third Test \n");
private static void CheckCanWriteOutputFolders(List<string> directoryList)
List<string> failedDirectories;
const int maximumLoopExecutionTimes = 3;
const int millisecondsToSleepBeforeTryAgain = 1000;
Console.WriteLine("Before-Sleep, loopCount:"+loopCount);
Console.WriteLine("Inside-Sleep, loopCount:"+loopCount);
Thread.Sleep(millisecondsToSleepBeforeTryAgain);
failedDirectories = GetAccessFailingDirectoryList(directoryList);
} while (failedDirectories.Any() && (loopCount < maximumLoopExecutionTimes));
Console.WriteLine("After the Loop, loopCount:"+loopCount);
foreach(string t in failedDirectories)
if (failedDirectories.Any())
Console.WriteLine("Exception Thrown here:"+string.Join("; ", failedDirectories.ToArray()));
private static List<string> GetAccessFailingDirectoryList(IEnumerable<string> directoryList)
return directoryList.Where(directory => CheckCanWriteDirectory(directory)).ToList();
public static bool CheckCanWriteDirectory(string directory)
return directory.Any(char.IsDigit);