using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading; namespace DirectoryTest { class Program { static void Main(string[] args) { try { Console.WriteLine("Creating test directory"); CreateTestDirectory(); } catch (Exception ex) { DisplayError(ex); WaitForKey(); return; } Console.WriteLine("Directory created"); WaitForKey(); DeleteTestDirectory(); //SafeDeleteTestDirectory(); Console.WriteLine("Directory deleted"); WaitForKey(); } static void DeleteTestDirectory() { try { Console.WriteLine("Deleting test directory"); Directory.Delete("c:\\Temp\\Test1", true); } catch (Exception ex) { DisplayError(ex); WaitForKey(); return; } } static void SafeDeleteTestDirectory() { try { Console.WriteLine("Deleting test directory with retry"); Directory.Delete("c:\\Temp\\Test1", true); } catch (Exception ex) { DisplayError(ex); Thread.Sleep(1000); Console.WriteLine("Failed! Trying again..."); try { Directory.Delete("c:\\Temp\\Test1", true); } catch (Exception ex2) { DisplayError(ex2); WaitForKey(); return; } } } static char WaitForKey() { Console.WriteLine("Press any key..."); ConsoleKeyInfo cki = Console.ReadKey(); return cki.KeyChar; } static void CreateTestDirectory() { Directory.CreateDirectory("c:\\Temp\\Test1"); Directory.CreateDirectory("c:\\Temp\\Test1\\Test2"); using (StreamWriter sw = new StreamWriter("c:\\Temp\\Test1\\TestFile1.txt", false)) { sw.WriteLine("This is a line of text"); sw.Close(); } using (StreamWriter sw = new StreamWriter("c:\\Temp\\Test1\\Test2\\TestFile2.txt", false)) { sw.WriteLine("This is a line of text"); sw.Close(); } } static void DisplayError(Exception ex) { Exception current = ex; while (null != current) { Console.WriteLine("Error: " + ex.Message); Console.WriteLine("Stack: " + ex.StackTrace); Console.WriteLine(Environment.NewLine); current = current.InnerException; } } } }