Dieser Tipp ist eine Weiterentwicklung des Tipps #Region "Syncronisation Teil 1:" ' Ordner erstellen, Dateien löschen, Dateien ändern, neue Dateien erstellen Public Sub CopyFolder_Sync(ByVal sSrcPath As String, ByVal sDestPath As String) ' Falls Zielordner nicht existiert, jetzt erstellen If Not Directory.Exists(sDestPath) Then Directory.CreateDirectory(sDestPath) End If ' Reihenfolge: ' 1. Löschen (damit das, was gelöscht werden muss, schon mal weg ist ' und nicht zum Vergleichen für die Änderungen herangezogen werden ' muss -> spart Zeit!) ' 2. Ändern (erst in Frage kommende Dateien ändern, dann Dateien, die ' neu erstellt werden müssen, neu erstellen, weil sonst auch die neu ' erstellten Dateien beim Vergleich der Änderungen mit geprüft ' würden -> spart Zeit!) ' 3. Neue Dateien erstellen ' Alle Dateien des Ziel-Ordners LÖSCHEN, die nicht im ' Quell-Ordner vorhanden sind: Dateien_Im_Zielordner_Löschen(sSrcPath, sDestPath) ' Alle Dateien des Ziel-Ordners ÄNDERN durch Löschen und Kopieren, ' die im Quell-Ordner mit einem anderen Änderungsdatum vorhanden sind: Dateien_Im_Zielordner_Ändern(sSrcPath, sDestPath) ' Alle Dateien im Ziel-Ordner ERSTELLEN, die dort fehlen: Dateien_Im_Zielordner_Erstellen(sSrcPath, sDestPath) ' Jetzt alle Unterordner ermitteln und die CopyFolder-Sub ' rekursiv(aufrufen) Dim sDirs() As String = 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_Sync(sDirs(i).ToString & "\", sDestPath & sDir & "\") End If Next i End Sub Private Sub Dateien_Im_Zielordner_Löschen(ByVal sSrcPath As String, _ ByVal sDestPath As String) Dim sFiles() As String = Directory.GetFiles(sDestPath) Dim sFile As String For i As Integer = 0 To sFiles.Length - 1 sFile = sFiles(i).Substring(sFiles(i).LastIndexOf("\") + 1) If Not File.Exists(sSrcPath & sFile) Then File.Delete(sDestPath & sFile) End If Next i End Sub Private Sub Dateien_Im_Zielordner_Ändern(ByVal sSrcPath As String, _ ByVal sDestPath As String) Dim sFiles() As String = Directory.GetFiles(sDestPath) Dim sFile As String For i As Integer = 0 To sFiles.Length - 1 sFile = sFiles(i).Substring(sFiles(i).LastIndexOf("\") + 1) If File.Exists(sSrcPath & sFile) Then Dim DestFile As New FileInfo(sDestPath & sFile) Dim SrcFile As New FileInfo(sSrcPath & sFile) If DestFile.LastWriteTime <> SrcFile.LastWriteTime Then File.Delete(sDestPath & sFile) File.Copy(sSrcPath & sFile, sDestPath & sFile) End If End If Next i End Sub Private Sub Dateien_Im_Zielordner_Erstellen(ByVal sSrcPath As String, _ ByVal sDestPath As String) Dim sFiles() As String = Directory.GetFiles(sSrcPath) Dim sFile As String For i As Integer = 0 To sFiles.Length - 1 sFile = sFiles(i).Substring(sFiles(i).LastIndexOf("\") + 1) If Not File.Exists(sDestPath & sFile) Then File.Copy(sSrcPath & sFile, sDestPath & sFile) End If Next i End Sub #End Region #Region "Syncronisation Teil 2:" ' Ordner im Ziel löschen, wenn es sie in der Quelle nicht gibt" Public Sub DeleteFolder_Sync(ByVal sSrcPath As String, _ ByVal sDestPath As String) ' Falls Zielordner in der Quelle nicht existiert, ' jetzt im Ziel löschen: If Not Directory.Exists(sSrcPath) Then Directory.Delete(sDestPath, True) End If ' Jetzt alle Unterordner ermitteln und die ' DeleteFolder-Sub rekursiv aufrufen: Try Dim sDirs() As String = Directory.GetDirectories(sDestPath) Dim sDir As String For i As Integer = 0 To sDirs.Length - 1 If sDirs(i) <> sSrcPath Then sDir = sDirs(i).Substring(sDirs(i).LastIndexOf("\") + 1) DeleteFolder_Sync(sSrcPath & sDir & "\", sDirs(i).ToString & "\") End If Next i Catch ex As Exception End Try End Sub #End Region Aufrufbeispiel: ' Bitte den BackSlash am Ende nicht vergessen Dim SourcePath As String = "C:\Quelle\" Dim DestinationPath As String = "C:\Ziel\" ' Durchführung der Syncronisation: CopyFolder_Sync(SourcePath, DestinationPath) DeleteFolder_Sync(SourcePath, DestinationPath) Dieser Tipp wurde bereits 16.052 mal aufgerufen.
Anzeige
![]() ![]() ![]() (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. |
sevZIP40 Pro DLL ![]() Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Tipp des Monats ![]() Dieter Otter Beliebige Zeichen am Anfang und Ende eines Strings entfernen Mit der Trim-Funktion lassen sich nicht nur Leerzeichen, sondern bei Bedarf auch beliebige Zeichen entfernen. TOP Entwickler-Paket ![]() TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
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. |