Rubrik: Dateisystem · Ordner & Verzeichnisse | VB-Versionen: VB.NET | 05.03.07 |
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)