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