Rubrik: Dateisystem · Ordner & Verzeichnisse | VB-Versionen: VB.NET | 05.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 Otter | Bewertung: | Views: 33.389 |
www.tools4vb.de | System: WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | 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)