Code-Beispiel

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.

Programmcodebeispiel in Visual Basic .NET (VB.NET)

' ============================
' .NET-Code-Beispiel in Visual Basic .NET
' Datei kopieren und verschieben
' (C) [email protected]
' ============================
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

Weiteres Programmcodebeispiel in 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

Buchtipp

Buchcover PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch (6. Auflage Juni 2024 (10. Auflage Gesamtreihe)) PowerShell 7 und Windows PowerShell 5 – das Praxishandbuch
Autor(en): Dr. Holger Schwichtenberg
Erschienen 2024
Umfang: 1426 Seiten
ISBN: 3446481958

Beratung & Support

Schulungen

  Anfrage für eine individuelle Schulung zum Thema VISUAL BASIC C#  Gesamter Schulungsthemenkatalog

Fachbücher

 Alle unsere aktuellen Fachbücher  E-Book-Abo für ab 99 Euro im Jahr