Diese Funktion kopiert eine Datei Paketweise. So funktionieren zwar alle Kopieralgorithmen nur hat man hier die möglichkeit die Paketgröße selber zu bestimmen und man könnte mit ein paar Modifizierungen (z.B. Progressbar) den Koperstatus anzeigen lassen, was bei einer Normalen integrierten Kopierfunktion nicht der Fall ist. Ich habe die Paketgröße standardgemäß auf 50 KB gesetzt weil diese größe sich am besten geeignet hat. Wählt man eine zu große oder zu kleine Paketgröße dann dauert der Kopiervorgang länger.
Imports System.IO
Public Function CopyFile(ByVal Source As String, ByVal Target As String, Optional ByVal BufferSize As Long = 51200) As Boolean
Try
Dim SourceFileStream As New FileStream(Source, FileMode.Open)
Dim TargetFileStream As New FileStream(Target, FileMode.Create)
Dim Data(BufferSize) As Byte
Dim Buffer As Long = 0
Dim BufferCount As Long = 0
Dim FileSize As Long = SourceFileStream.Length
Do
If BufferCount >= FileSize - BufferSize Then
ReDim Data(FileSize - BufferCount)
Buffer = SourceFileStream.Read(Data, 0, FileSize - BufferCount)
TargetFileStream.Write(Data, 0, Buffer)
Exit Do
End If
Buffer = SourceFileStream.Read(Data, 0, BufferSize)
TargetFileStream.Write(Data, 0, BufferSize)
BufferCount += Buffer
Loop
SourceFileStream.Close()
TargetFileStream.Close()
Catch
Return False
End Try
End Function
Kommentare zum Snippet