Guten Morgen,
ich habe einen Kopiervorgang erstellt, bei dem Ordner und Dateien von A nach B kopiert werden.
Hiermit soll der Fortschritt in einem Label angezeigt wurden. Bei den zu kopierenden Dateien wird allerdings nicht die tatsächliche Dateigröße ermittelt, sondern es wird direkt die Dateigröße ausgegeben, die eben am Ende herauskommen sollte.
Zur genaueren Erläuterung: Angenommen, kopiert würde eine sehr große Datei von 500.000.000 Bytes. Per Timer würde dann im Interval von ein paar Millisekunden ständig die Größe aller Dateien im Zielverzeichnis ermittelt werden (das macht der Code oben). Allerdings wird dann nicht die "derzeitige" Dateigröße im Zielverzeichnis ausgegeben, sondern es werden direkt die 500.000.000 Bytes zum vorherigen Wert draufgerechnet, also die "Soll-"Dateigröße aus dem Quellverzeichnis.
Ich hoffe, Ihr versteht was ich meine. Würde mich über Antworten freuen.
Beste Grüße
ich habe einen Kopiervorgang erstellt, bei dem Ordner und Dateien von A nach B kopiert werden.
VB.NET-Quellcode
- Function GetFileLength(ByVal filename As String) As Long
- Dim retval As Long
- Try
- Dim fi As New System.IO.FileInfo(filename)
- retval = fi.Length
- Catch ex As System.IO.FileNotFoundException
- ' If a file is no longer present,
- ' just return zero bytes.
- retval = 0
- End Try
- Return retval
- End Function
- Private Sub testtimer_Tick(sender As System.Object, e As System.EventArgs) Handles testtimer.Tick
- Dim root As String = Zielverzeichnis.Text
- Dim fileList = My.Computer.FileSystem.GetFiles _
- (root, FileIO.SearchOption.SearchAllSubDirectories, "*.*")
- Dim fileQuery = From file In fileList _
- Select GetFileLength(file)
- Dim fileLengths = fileQuery.ToArray()
- Dim totalBytes = Aggregate aFile In fileLengths Into Sum()
- text_label.Text = "Es sind bereits " & totalBytes & " Bytes kopiert " & _
- fileList.Count & " Dateien im Verzeichnis " & root
- End Sub
Hiermit soll der Fortschritt in einem Label angezeigt wurden. Bei den zu kopierenden Dateien wird allerdings nicht die tatsächliche Dateigröße ermittelt, sondern es wird direkt die Dateigröße ausgegeben, die eben am Ende herauskommen sollte.
Zur genaueren Erläuterung: Angenommen, kopiert würde eine sehr große Datei von 500.000.000 Bytes. Per Timer würde dann im Interval von ein paar Millisekunden ständig die Größe aller Dateien im Zielverzeichnis ermittelt werden (das macht der Code oben). Allerdings wird dann nicht die "derzeitige" Dateigröße im Zielverzeichnis ausgegeben, sondern es werden direkt die 500.000.000 Bytes zum vorherigen Wert draufgerechnet, also die "Soll-"Dateigröße aus dem Quellverzeichnis.
Ich hoffe, Ihr versteht was ich meine. Würde mich über Antworten freuen.
Beste Grüße
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Astharey“ ()