vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v2.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2014
 
zurück
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:     [ Jetzt bewerten ]Views:  15.385 
www.tools4vb.deSystem:  WinNT, Win2k, WinXP, Vista, Win7, Win8 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)

Dieser Tipp wurde bereits 15.385 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


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.
 
   

Druckansicht Druckansicht Copyright ©2000-2014 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel