TOC

This article has been localized into German by the community.

Dateibearbeitung:

Änderung von Dateien und Ordnern

Im vorigen Kapitel haben wir das Lesen und Schreiben von Text mit einfachen Dateien untersucht. Wir haben die File-Klasse dafür verwendet, aber sie bietet weit mehr als nur Lesen und Schreiben. In Kombination mit der Directory-Klasse können wir nahezu alle Dateisystemvorgänge ausführen, z. B. Umbenennen, Verschieben, Löschen usw.

In diesem Kapitel finden Sie zahlreiche Beispiele dafür. Die Erklärungen sind begrenzt, da die verwendeten Methoden ziemlich einfach somit auch einfach zu bedienen sind. Sie sollten sich zweier Dinge bewusst sein: Stellen Sie zunächst sicher, dass Sie den System.IO-Namespace folgendermaßen importieren:

using System.IO;

Beachten Sie auch, dass wir hier keine Ausnahmebehandlung vornehmen. Wir werden vor der Verwendung prüfen, ob Dateien und Verzeichnisse vorhanden sind. Es gibt jedoch keine Ausnahmebehandlung. Wenn also etwas schief geht, stürzt die Anwendung ab. Ausnahmebehandlung ist im Allgemeinen eine gute Idee, wenn I/O-Vorgänge (Eingabe/Ausgabe- Vorgänge) ausgeführt werden. Weitere Informationen finden Sie im Kapitel zur Ausnahmebehandlung in diesem Lernprogramm.

In allen Beispielen verwenden wir einfache Datei- und Verzeichnisnamen, die sich in demselben Verzeichnis befinden müssen wie die generierte EXE-Datei Ihrer Anwendung. In den Projekteinstellungen können Sie sehen, wo Ihre EXE-Datei erzeugt wird.

Eine Datei löschen

if(File.Exists("test.txt"))
{
    File.Delete("test.txt");
    if(File.Exists("test.txt") == false)
Console.WriteLine("File deleted...");
}
else
    Console.WriteLine("File test.txt does not yet exist!");
Console.ReadKey();

Ein Verzeichnis löschen

if(Directory.Exists("testdir"))
{
    Directory.Delete("testdir");
    if(Directory.Exists("testdir") == false)
Console.WriteLine("Directory deleted...");
}
else
    Console.WriteLine("Directory testdir does not yet exist!");
Console.ReadKey();

Wenn "testdir" nicht leer ist, erhalten Sie eine Ausnahme. Warum? Da diese Version von Delete() für die Directory-Klasse nur für leere Verzeichnisse funktioniert. Es ist jedoch sehr einfach zu ändern:

Directory.Delete("testdir", true);

Der zusätzliche Parameter stellt sicher, dass die Delete()-Methode rekursiv ist. Das bedeutet, dass Unterverzeichnisse durchsucht und die Dateien davon gelöscht werden, bevor die Verzeichnisse gelöscht werden.

Umbenennen einer Datei

if(File.Exists("test.txt"))
{
    Console.WriteLine("Please enter a new name for this file:");
    string newFilename = Console.ReadLine();
    if(newFilename != String.Empty)
    {
File.Move("test.txt", newFilename);
if(File.Exists(newFilename))
{
    Console.WriteLine("The file was renamed to " + newFilename);
    Console.ReadKey();
}
    }
}

Sie werden feststellen, dass wir die Move()-Methode verwenden, um die Datei umzubenennen. Warum keine Rename()-Methode? Weil es keine solche Methode gibt, da Verschieben und Umbenennen im Wesentlichen dasselbe ist.

Ein Verzeichnis umbenennen

Das gleiche mit einem Verzeichnis zu tun, ist genauso einfach:

if(Directory.Exists("testdir"))
{
    Console.WriteLine("Please enter a new name for this directory:");
    string newDirName = Console.ReadLine();
    if(newDirName != String.Empty)
    {
Directory.Move("testdir", newDirName);
if(Directory.Exists(newDirName))
{
    Console.WriteLine("The directory was renamed to " + newDirName);
    Console.ReadKey();
}
    }
}

Ein neues Verzeichnis erstellen

Das Erstellen eines neuen Verzeichnisses ist ebenfalls einfach. Verwenden Sie einfach die Methode CreateDirectory() für die Directory-Klasse, wie in diesem Beispiel:

Console.WriteLine("Please enter a name for the new directory:");
string newDirName = Console.ReadLine();
if(newDirName != String.Empty)
{
    Directory.CreateDirectory(newDirName);
    if(Directory.Exists(newDirName))
    {
Console.WriteLine("The directory was created!");
Console.ReadKey();
    }
}

Dateien lesen & Dateien schreiben

Als letztes Beispiel werde ich Ihnen zeigen, wie die Klasse File das Lesen und Schreiben in eine Datei sehr einfach macht. Mit C# kann dies auf viele Arten geschehen, aber die Read* und Write* Methoden der File-Klasse sind wahrscheinlich die einfachsten. Es gibt drei Versionen: WriteAllBytes(), WriteAllLines() und WriteAllText() mit den entsprechenden Read-Methoden. Die einfachste zu verwendende ist die letzte, die eine einfache Zeichenfolge als Eingabe verwendet. Lassen Sie mich anhand eines einfachen Beispiels veranschaulichen, wie sie funktionieren:

string fileContents = "John Doe & Jane Doe sitting in a tree...";
File.WriteAllText("test.txt", fileContents);

string fileContentsFromFile = File.ReadAllText("test.txt");
Console.WriteLine(fileContentsFromFile);

Beachten Sie, wie wenige Codezeilen ich in eine Datei schreiben und dann zurücklesen muss! Der erste Parameter für beide Methoden ist der Pfad, in den der Text geschrieben und von dort gelesen werden soll. Normalerweise würden Sie hier einen vollständigen Pfad angeben. Um das Beispiel klarer zu machen, gebe ich nur einen Dateinamen an, der dazu führt, dass die Datei in dasselbe Verzeichnis wie die EXE-Datei geschrieben wird.

Zusammenfassung

Wie Sie sehen, sind die File- und Directory-Klassen eine große Hilfe, wenn Sie mit Dateien und Verzeichnissen arbeiten müssen. Sie können Ihnen bei den meisten erforderlichen Operationen helfen. Wenn Sie noch weiter fortgeschrittene Aufgaben erledigen müssen, dienen diese Klassen und ihre Methoden normalerweise als großartige Bausteine für die Erweiterung.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!