Code-Beispiel
Ein Beispiel zum Einsatz der Klasse System.IO.Directory, File aus der .NET-Klassenbibliothek.
Autor: Dr. Holger Schwichtenberg
Beschreibung
Die Klassen Directory und File bieten beide die Methode Move() an, mit zwei Parametern: im ersten der Pfad des Ausgangsobjekts, im zweiten der Pfad des Zielobjekts. Die Klassen DirectoryInfo und FileInfo bieten die gleiche Funktionalität mit der Methode MoveTo(). Hier wird nur ein Parameter erwartet: der Zielpfad. Das Ausgangsobjekt ist bereits durch die aktuelle Bindung der Klassen DirectoryInfo bzw. FileInfo festgelegt.
Das Kopieren ist leider nur auf Dateiebene definiert durch Copy() in File bzw. CopyTo() in FileInfo. Es gibt kurioserweise keine Möglichkeit in der FCL, ein ganzes Verzeichnis zu kopieren. Sie müssen dies selbst durch rekursives Kopieren der Dateien erledigen.
Beispiel
Im folgenden Beispiel wird ein Ordner angelegt, eine Datei dorthin verschoben, die Ursprungsdatei dann gelöscht und die Kopie an den Ursprungsordner verschoben. Damit die "Operation" rückstandsfrei bleibt, wird der angelegte Ordner am Ende wieder gelöscht.
Programmcodebeispiele Visual Basic .NET (VB.NET)
' ============================
' .NET-Code-Beispiel in Visual Basic .NET
' Datei kopieren und verschieben
' (C) Holger@Schwichtenberg.de
' ============================
Sub datei_bewegen()
Const DOCORDNER = _
"\_daten\dateisystem\Dokumente\"
If Directory.Exists(DOCORDNER) Then
Directory.Delete(DOCORDNER, True)
End If
Directory.CreateDirectory(DOCORDNER)
out("Ordner angelegt!")
File.Copy("..\daten\dateisystem\buch.doc",
DOCORDNER & "\buch.doc")
out("Datei kopiert!")
File.Delete("..\_daten\dateisystem\buch.doc")
out("Ausgangsdatei gelöscht")
File.Move(DOCORDNER & "buch.doc", _
"..\_daten\dateisystem\buch.doc")
out("Kopie verschoben")
Directory.Delete(DOCORDNER, True)
out("Verzeichnis gelöscht")
End Sub
Programmcodebeispiele CSharp (C#)
using System;
using System.IO;
using System.Windows.Forms;
namespace FCLBuch._SystemIO {
public class Samples_Dateisystem {
public void Datei_Bewegen() {
// Datei kopieren und verschieben
string docOrdner = @"..\_daten\dateisystem\Dokumente\";
if (Directory.Exists(docOrdner))
Directory.Delete(docOrdner, true);
Directory.CreateDirectory(docOrdner);
FclOutput.PrintOut("Ordner angelegt!");
File.Copy(@"..\_daten\dateisystem\buch.doc", docOrdner + "\buch.doc");
FclOutput.PrintOut("Datei kopiert!");
File.Delete(@"..\_daten\dateisystem\buch.doc");
FclOutput.PrintOut("Ausgangsdatei gelöscht");
File.Move(docOrdner + "buch.doc", @"..\_daten\dateisystem\buch.doc");
FclOutput.PrintOut("Kopie verschoben");
Directory.Delete(docOrdner, true);
FclOutput.PrintOut("Verzeichnis gelöscht");
}
}
}
Hinweise
Ausgaben werden in den Beispielen durch Hilfsroutinen wie out() und
PrintOut() erzeugt. Diese sind hier nicht angegeben, da deren Implementierung
von der jeweiligen Umgebung abhängt. Für Konsolenanwendungen können hier z.B.
Console.WriteLine() einsetzen.
Querverweise
Liste aller Codebeispiele
Definition '.NET Framework Class Library'
Verfügbarkeit der Klasse 'System.IO.Directory, File'
Übersicht über den FCL-Namensraum 'System.IO'
.NET & Visual Studio Community Portal