vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Dateisystem · Ordner & Verzeichnisse   |   VB-Versionen: VB.NET05.03.07
Ordner einschl. aller Unterordner kopieren (VB.NET)

Mit dieser Funktion lässt sich ein kompletter Ordner, einschl. aller Dateien und Unterordner kopieren.

Autor:   Dieter OtterBewertung:  Views:  28.015 
www.tools4vb.deSystem:  WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Heute möchten wir Ihnen eine kleine Funktion vorstellen, mit der sich der gesamte Inhalt eines Ordners (alle Dateien und einschl. aller Unterordner) in einen neuen Ziel-Ordner kopieren lässt. Der Zielordner wird hierbei autom. erstellt, falls dieser nicht existiert. Über den optionalen Parameter "bOverWrite" kann zudem festgelegt werden, ob gleichnamige Dateien im Ziel-Ordner überschrieben werden sollen oder nicht.

' Gesamten Inhalt eines Ordners kopieren
Public Sub CopyFolder(ByVal sSrcPath As String, _
  ByVal sDestPath As String, _
  Optional ByVal bSubFolder As Boolean = True)
  Optional ByVal bOverWrite As Boolean = True)
 
  ' Falls Zielordner nicht existiert, jetzt erstellen
  If Not System.IO.Directory.Exists(sDestPath) Then
    System.IO.Directory.CreateDirectory(sDestPath)
  End If
 
  ' zunächst alle Dateien des Quell-Ordners ermitteln
  ' und kopieren
  Dim sFiles() As String = System.IO.Directory.GetFiles(sSrcPath)
  Dim sFile As String
  For i As Integer = 0 To sFiles.Length - 1
    ' Falls Datei im Zielordner bereits existiert, nur 
    ' kopieren, wenn Parameter "bOverWrite" auf True 
    ' festgelegt ist
    sFile = sFiles(i).Substring(sFiles(i).LastIndexOf("\") + 1)
    If bOverWrite Or Not System.IO.File.Exists(sDestPath & "\" & sFile) Then
      System.IO.File.Copy(sFiles(i), sDestPath & "\" & sFile, True)
    End If
  Next i
 
  If bSubFolder Then
    ' jetzt alle Unterordner ermitteln und die CopyFolder-Funktion
    ' rekursiv aufrufen
    Dim sDirs() As String = System.IO.Directory.GetDirectories(sSrcPath)
    Dim sDir As String
    For i As Integer = 0 To sDirs.Length - 1
      If sDirs(i) <> sDestPath Then
        sDir = sDirs(i).Substring(sDirs(i).LastIndexOf("\") + 1)
        CopyFolder(sDirs(i), sDestPath & "\" & sDir, True, bOverWrite)
      End If
    Next i
  End If
End Sub

Aufrufbeispiel:

' Ordner "d:\temp" einschl. aller Unterordner 
' nach "d:\Kopie von temp" kopieren
CopyFolder("d:\temp", "d:\kopie von temp")
' alle Dateien des Ordners "d:\temp" nach "e:\kopie" 
' kopieren, wobei Unterordner NICHT kopiert werden sollen
CopyFolder("d:\temp", "e:\kopie", False)



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2019 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.