Dateien und Streams: Ordnerzugriffe
Die Funktionen für Ordnerzugriffe befinden sich in der statische Klasse Directory. Einige Funktionen für Ordnerzugriffe sind vom Namen und deren Bedeutung gleich oder ähnlich zu Funktionen für Dateizugriffe. Zum Erstellen eines Verzeichnisses kann die Funktion CreateDirectory() verwendet werden. Die Prüfung ob ein Verzeichnis existiert, kann mit der Funktion Exists() geprüft werden. Das Löschen eines Verzeichnisses erfolgt mit der Funktion Delete(). Die Funktion erwartet wie die anderen Funktionen auch nur einen Parameter: den Ordnernamen. Die Delete()-Funktion ist überladen und kann auch mit einem weiteren Parameter aufgerufen werden. Hier wird ein bool-Wert übergeben, der angibt, ob alle untergeordneten Dateien und Verzeichnisse ebenfalls gelöscht werden sollen. Beim Aufruf mit einem Parameter kann das Verzeichnis nur gelöscht werden, wenn der Ordner leer ist. Über die Move()-Funktion kann ein Verzeichnis verschoben werden. Dabei spielt es keine Rolle, ob das Verzeichnis leer ist oder nicht.
Ein Programm arbeitet immer im sogenannten Arbeitsverzeichnis. Dies ist standardmäßig das Verzeichnis, in welchem die exe-Datei liegt bzw. von wo diese aufgerufen wird. Über die Funktion GetCurrentDirectory() und SetCurrentDirectory() kann das aktuelle Verzeichnis ausgelesen oder geändert werden.
In C# ist es auch möglich, alle untergeordneten Verzeichnisse oder Dateien eines Verzeichnisses zu ermitteln. Hierfür gibt es die Funktionen GetDirectories() und GetFiles(). Beide Funktionen erwarten als Parameter das zu prüfende Verzeichnis und geben ein Zeichenketten-Array zurück. Wichtig: Beide Funktionen geben den kompletten Pfad des Verzeichnisses bzw. der Datei zurück, weshalb wir im Beispiel Zeichenketten-Funktionen aufrufen, um lediglich den einzelnen Verzeichnis- bzw. Dateinamen in der Konsole auszugeben.
Für das Kopieren eines Verzeichnisses bietet C# keine eigene Funktion. Eine solche Funktion kann jedoch mit den oben genannten Funktionen wie CreateDirectory(), GetDirectories() und GetFiles() sowie der Funktion File.Copy() realisiert werden.
Program.cs
const string sTestOrdner = "Test"; const string sTestOrdner2 = "Test-2"; string[] aOrdner; string[] aDateien; try { Console.WriteLine("Das aktuelle Arbeitsverzeichnis ist:"); Console.WriteLine(Directory.GetCurrentDirectory()); Console.WriteLine(); Directory.CreateDirectory(sTestOrdner); Directory.Move(sTestOrdner, sTestOrdner2); Directory.CreateDirectory(sTestOrdner); Console.WriteLine("Ordnerliste des Arbeitsverzeichnises:"); aOrdner = Directory.GetDirectories(Directory.GetCurrentDirectory()); foreach (string sOrdner in aOrdner) Console.WriteLine(sOrdner.Substring(sOrdner.LastIndexOf('\\') + 1)); Console.WriteLine(); Console.WriteLine("Dateiliste des Arbeitsverzeichnises:"); aDateien = Directory.GetFiles(Directory.GetCurrentDirectory()); foreach (string sDatei in aDateien) Console.WriteLine(sDatei.Substring(sDatei.LastIndexOf('\\') + 1)); // Alle Ordner wieder löschen if (Directory.Exists(sTestOrdner)) // Bedingung sollte immer zutreffen Directory.Delete(sTestOrdner); if (Directory.Exists(sTestOrdner2)) // Bedingung sollte immer zutreffen Directory.Delete(sTestOrdner2); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } Console.ReadKey();