Beste medetweakers,
Vandaag besloten een simpel sync programmaatje te maken. Het is de bedoeling dat het met 1 druk op de knop 2 folders synct. Ik kan natuurlijk alle files gaan overwriten maar dit is onzinnig. Daarom dus dat hij alleen de files kopieert die nog niet bestaan, en alleen vervangt als het sourcebestand nieuwer is.
Maar het ding is... Ik kom er niet uit. Ik had een stukje C# dat ik gevonden had vertaald naar .Net, maar het overschreef gewoon alles. Verder valt er op google ook niets te vinden (en ja ik heb al wel even gezocht).
Wat mijn code nu (hij overschrijft alles) :
Dus
Doel : Folder kopieren, maar al bestande bestanden enkel vervangen als het bestand nieuwer is
Wat het fout doet : Hij vervangt alles ipv alleen de "verouderde bestanden".
Als er iemand mij kan helpen... ben ik hem zeer dankbaar
Vandaag besloten een simpel sync programmaatje te maken. Het is de bedoeling dat het met 1 druk op de knop 2 folders synct. Ik kan natuurlijk alle files gaan overwriten maar dit is onzinnig. Daarom dus dat hij alleen de files kopieert die nog niet bestaan, en alleen vervangt als het sourcebestand nieuwer is.
Maar het ding is... Ik kom er niet uit. Ik had een stukje C# dat ik gevonden had vertaald naar .Net, maar het overschreef gewoon alles. Verder valt er op google ook niets te vinden (en ja ik heb al wel even gezocht).
Wat mijn code nu (hij overschrijft alles) :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| Public Sub CopyFiles(ByVal Source As String, ByVal Destination As String) Dim sourcefiles() As String = Directory.GetFiles(Source) Dim destinationfiles() As String = Directory.GetFiles(Destination) For Each sourceFile As String In sourcefiles Dim destfilename = Destination + "\\" + New FileInfo(sourceFile).Name If IsStringInArray(destinationfiles, destfilename) Then If File.GetLastWriteTime(sourceFile) > File.GetLastWriteTime(destfilename) Then File.Copy(sourceFile, destfilename, True) End If Else File.Copy(sourceFile, destfilename, True) End If Next End Sub Public Function IsStringInArray(ByVal Array As Array, ByVal Find As String) As Boolean For Each Str As String In Array If Str.Contains(Find) Then Return True Else Return False End If Next End Function |
Dus
Doel : Folder kopieren, maar al bestande bestanden enkel vervangen als het bestand nieuwer is
Wat het fout doet : Hij vervangt alles ipv alleen de "verouderde bestanden".
Als er iemand mij kan helpen... ben ik hem zeer dankbaar
[ Voor 5% gewijzigd door Mavamaarten op 05-02-2011 19:46 ]
Android developer & dürüm-liefhebber