Sie sind hier: Startseite
 Liste aller Codebeispiele

Kopieren und Verschieben einer Datei

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");
}
}
}

Querverweise

 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