using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

public class Program
{
   public static void Main(string[] args)
   {
       Console.WriteLine(" Verzeichnisse in Systemverzeichnis auflisten: ");
       ListDirs();
       Console.ReadLine();

       Console.WriteLine(" Verzeichnis C:\\CSharp angelegt ");
       CreateDirs();
       Console.ReadLine();

       Console.WriteLine(" Verzeichnis C:\\CSharp gelöscht ");
       DeleteDirs();
       Console.ReadLine();

       Console.WriteLine(" Verzeichnis C:\\CSharp wurde nach C:\\DSharp verschoben ");
       MoveDirs();
       Console.ReadLine();

       // Aufräumen
       DirectoryInfo di = new DirectoryInfo(@"C:\DSharp");
       di.Delete(true);

       // Arbeiten mit PATH
       string path = @"\root\system\devices";

       Console.WriteLine(Path.GetDirectoryName(path));
       Console.WriteLine(Path.GetTempPath());
       Console.WriteLine(Path.GetInvalidPathChars());

       Console.ReadLine();

   }

   public static void ListDirs()
   {
       //DirectoryInfo di = new DirectoryInfo(@"C:\");

       string sysroot = Environment.GetEnvironmentVariable("SystemRoot");
       DirectoryInfo di = new DirectoryInfo(sysroot);

       if (di.Exists)
       {
           // Array der Unterverzeichnisse anlegen
           Console.WriteLine(" --- Array der Verzeichnisse --- ");

           DirectoryInfo[] dis = di.GetDirectories();
           foreach (DirectoryInfo d in dis)
           {
              Console.WriteLine(d.Name);
           }
           Console.ReadLine();

           // Auflistung der Unterverzeichnisse anlegen
           Console.WriteLine(" --- Auflistung der Verzeichnisse --- ");

           IEnumerable<DirectoryInfo> dirs = di.EnumerateDirectories();
           foreach (DirectoryInfo d in dirs)
           {
              Console.WriteLine(d.Name);
           }
           Console.ReadLine();


           // Auflistung der Unterverzeichnisnamen anlegen
           Console.WriteLine(" --- Auflistung der Verzeichnisnamen --- ");

           IEnumerable<string> dirNames = Directory.EnumerateDirectories(di.ToString());
           foreach (string s in dirNames)
           {
              Console.WriteLine(s);
           }

       }
       else
           Console.WriteLine("Verzeichnis existiert nicht");
   }

   public static void CreateDirs()
   {
       DirectoryInfo di = new DirectoryInfo(@"C:\CSharp");

       di.Create();

       di.CreateSubdirectory("Kapitel");
   }

   public static void DeleteDirs()
   {
       DirectoryInfo di = new DirectoryInfo(@"C:\CSharp");

       di.Delete(true);
   }

   public static void MoveDirs()
   {
       Directory.CreateDirectory(@"C:\CSharp");   

       DirectoryInfo di = new DirectoryInfo(@"C:\CSharp");
       di.MoveTo(@"C:\DSharp");
   }

}