Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1550 | Anzahl registrierter User: 1841 | Besucher online: 15
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Ordner mit Inhalt kopieren (rekursiv)


Autor: Christopher Wolf
Sprache: C#
Bewertung: 8,2
(1 Bewertung)
Anzahl der Aufrufe: 10134
  
Kick it on dotnet-kicks.de  

Beschreibung:

Dieses Snippet kopiert das angegebenen Quellverzeichnis, inklusive enthaltener Dateien, in das angegebenen Zielverzeichnis.

Dafür muss ein Verweis auf System.IO angelegt werden.
Es wurde mit dem StringBuilder gearbeitet da dieser leichte Performance Vorteile bringen kann, wenn viele Dateien bzw. Ordner kopiert werden sollen. Denn er erzeugt nicht immer ein neues Objekt, sondern "ergänzt" das bestehende nur.


using System.IO;



Ich hoffe es ist Hilfreich das kleine Snippet und ist nicht mit Fehler behaftet, ich konnte beim testen nichts feststellen.


Abgelegt unter: Ordner kopieren, Verzeichnis kopieren, Rekursion, rekursiv, kopieren, Verzeichnis, Verzeichnisse, Ordner.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#region -CopyDirectoryWithIncludedFiles(string dirCopySource, string dirCopyTarget)
#region XML-Doku
/// <summary>
///     Kopiert das angegebene Quellverzeichnis mit den beinhaltenden Verzeichnissen und Dateien in das angegebene Zielverzeichnis.
/// </summary>
/// <param name="dirCopySource">
///     Verzeichnis das kopiert werden soll mit dem gesamten Inhalt
/// </param>
/// <param name="dirCopyTarget">
///     Verzeichnis in dem das Quellverzeichnis kopiert werden soll
/// </param>
#endregion
private void CopyDirectoryWithIncludedFiles(string dirCopySource, string dirCopyTarget)
{
    // alle Unterverzeichnisse des aktuellen Verzeichnisses ermitteln
    string[] subDirectories = Directory.GetDirectories(dirCopySource);

    // Zielpfad erzeugen
    StringBuilder newTargetPath = new StringBuilder();
    {
        newTargetPath.Append(dirCopyTarget);
        newTargetPath.Append(dirCopySource.Substring(dirCopySource.LastIndexOf(@"\")));
    }

    // wenn aktueller Ordner nicht existiert -> ersstellen
    if(!Directory.Exists(newTargetPath.ToString()))
        Directory.CreateDirectory(newTargetPath.ToString());


    // Unterverzeichnise durchlaufen und Funktion mit dazu gehörigen Zielpfad erneut aufrufen (Rekursion)
    foreach (string subDirectory in subDirectories)
    {
        string newDirectoryPath = subDirectory;

        // wenn ''/'' an letzter Stelle dann entfernen
        if (newDirectoryPath.LastIndexOf(@"\") == (newDirectoryPath.Length - 1))
            newDirectoryPath = newDirectoryPath.Substring(0, newDirectoryPath.Length - 1);

        // rekursiever Aufruf
        CopyDirectoryWithIncludedFiles(newDirectoryPath, newTargetPath.ToString());
    }


    // alle enthaltenden Dateien des aktuellen Verzeichnisses ermitteln
    string[] fileNames = Directory.GetFiles(dirCopySource);
    foreach (string fileSource in fileNames)
    {
        // Zielpfad + Dateiname
        StringBuilder fileTarget = new StringBuilder();
        {
            fileTarget.Append(newTargetPath);
            fileTarget.Append(fileSource.Substring(fileSource.LastIndexOf(@"\")));
        }

        // Datei kopieren, wenn schon vorhanden überschreiben
        File.Copy(fileSource, fileTarget.ToString(), true);
    }
}
#endregion
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)



Diese Snippets könnten für Sie interessant sein:
[C#] Rekursion Treeview
[C#] rekursiver Verzeichnislauf
[C#] Eigenschaften aller Steuerlemente eines Formulars setzen
[C#] Treeview rekursiv durchsuchen
[VB.NET] Fibonacci-Folge iterativ erzeugen
[VB.NET] Binomialkoeffizient
[VB.NET] Größter gemeinsamer Teiler
[C#] Erzeugen von Zeichenfolgen durch Permutation
[VB.NET] Größter gemeinsamer Teiler (2)
[VB.NET] Ordergröße rekursiv bestimmen
[C#] Dateien und Ordner rekursiv löschen
[C#] Ordnergröße ermitteln
[C#] Ordner und Dateien rekursiv durchlaufen
[C#] FTP - Ordner Rekursiv erstellen
[C#] Dateien mit bestimmter Extension rekursiv in Array einlesen
[C#] Verhindern das Funktion rekursiv aufgerufen wird.
[C#] C# Ordner auslesen und in Liste speichern "rekursiv"
[VB.NET] Datei mittels Windows Dialog kopieren
[C#] Kopierroutinen object <-> byte[]
[VB.NET] Datei Paketweise Kopieren
[C#] Deep Copy of object
[C#] TreeView Drag&Drop
[C#] Inhalt einer Listbox kopieren
[C#] Dateilisten kopieren
[C#] long in ein byte-Array kopieren
[C#] CopyStream(Stream read, Stream write)
[C#] Aktuelles Verzeichnis auslesen
[C#] Verzeichnis überwachen mit dem FileSystemWatcher
[C#] Das Verzeichnis der Anwendung ermitteln
[C#] Verzeichnis im Windows Explorer öffnen
[C#] Datei/Ordner durch Erweiterungsmethoden abfragen
[C#] Datei-Eigenschaften zeigen (Eigenschaften-Fenster)
[C#] Programmverzeichnis finden (z.B. c:\Programme)
[C#] Automatisches Umbenennen eines Pfades
[C#] Kapazität mit Einheit darstellen
[C#] Verzeichnisauswahl Dialog (FolderBrowserDialog)
[C#] LogWriter klasse
[VB.NET] Assembly Verzeichnis
[C#] Assembly Verzeichnis
[VB.NET] Assembly Verzeichnis 2
[C#] Windows Temp Verzeichnis ermitteln
[C#] Datei im Windows-Explorer anzeigen und markieren
[C#] Prüfen ob in einem Verzeichnis Schreibrechte verfügbar sind!
[VB.NET] Ordnergröße ermitteln
[VB.NET] Ort des Ordners "Eigene Dateien" ermitteln und anzeigen
[VB.NET] Ermitteln ob ein Ordner leer ist
[C#] Alle Dateien eines Ordners auflisten - C# Version -
[C#] Alle Dateien in einem Ordner umbennen

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.