Datei- und Ordneranzahl in Verzeichnis ermitteln

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Astharey.

    Datei- und Ordneranzahl in Verzeichnis ermitteln

    Hallo Leute,

    ich bin's wieder mit 'nem Problem. Und zwar möchte ich alle Dateien und Ordner in einem Verzeichnis ermitteln (z.B. CD-Laufwerk). Diese sollen 1:1 in einen vom Benutzer bestimtmen Ordner kopiert, wobei die ProcessBar (ProgressBar) über den Fortschritt informieren soll und das progress_text (Label) die derzeitige Datei anzeigen soll. Ich habe schon angefangen, nur funktioniert das alles nicht. :thumbdown:

    VB.NET-Quellcode

    1. Dim Ordnergröße As Long = 0
    2. For Each Ordner As String In Directory.GetDirectories(sourcedir_path.Text, "*.*", SearchOption.AllDirectories)
    3. Try
    4. Ordnergröße += New FileInfo(Ordner).Length
    5. ProcessBar.Maximum = Ordnergröße.ToString 'Alle Dateien werden addiert
    6. My.Computer.FileSystem.CopyDirectory(Ordner.ToString, targetdir_path.Text)
    7. progress_text.Text = Ordner.ToString 'Gibt die derzeit zu kopierende Datei, Ordner an'
    8. ProcessBar.Increment(1) 'Pro Datei erhöht sich die ProcessBar um +1
    9. Catch ex As Exception
    10. End Try
    11. Next


    Danke für Tipps und Lösungen.

    Grüße
    So, habe noch eine besseres Beispiel gefunden und schon an meinen Code angepasst. Jetzt weiß ich nur nicht, wie ich's hinbekomme, dass aus einem Pfad (z.B. CD-Laufwerk) alle Ordner und Dateien ins "targetdir" kopiert werden. ?(

    VB.NET-Quellcode

    1. 'Kopieren
    2. If File.Exists(targetdir_path.Text) Then
    3. File.Delete(targetdir_path.Text)
    4. End If
    5. If File.Exists(sourcedir_path.Text) Then
    6. 'Streams
    7. Dim fromStream As FileStream = New FileStream(sourcedir_path.Text, FileMode.Open)
    8. Dim toStream As FileStream = New FileStream(targetdir_path.Text, FileMode.CreateNew)
    9. 'Variablen
    10. Dim total As Long = fromStream.Length
    11. Dim current As Long = 0
    12. Dim buffer(1024) As Byte
    13. Dim kbRemaining As Integer = 0
    14. Dim secRemaining As Integer = 0
    15. Dim kbs As Double = 0.0
    16. Dim eta As TimeSpan
    17. Dim startTime As DateTime
    18. 'Schleife
    19. cancel = False
    20. startTime = DateTime.Now
    21. Do
    22. 'Prüfen ob abgebrochen wurde
    23. If cancel Then
    24. fromStream.Close()
    25. toStream.Close()
    26. Exit Sub
    27. End If
    28. 'Bytes(lesen)
    29. Dim read As Integer = fromStream.Read(buffer, 0, buffer.Length)
    30. 'Bytes in die Datei schreiben
    31. toStream.Write(buffer, 0, read)
    32. 'current erhöhen
    33. current += read
    34. 'Prozente errechen
    35. Dim Prozent As Integer = current * 100 / total
    36. ProcessBar.Value = Prozent
    37. 'Eta
    38. eta = startTime.Subtract(DateTime.Now)
    39. 'KB und Zeit verbleibend
    40. kbRemaining = (current - total) / 1024
    41. If eta.Seconds <> 0 Then
    42. 'KB pro Sekunde
    43. kbs = Math.Round((current / 1024) / (eta.Seconds), 2)
    44. secRemaining = kbRemaining / kbs
    45. End If
    46. progress_text.Text = "Verbleibend: " + secRemaining.ToString() + " Sekunden"
    47. Application.DoEvents()
    48. Loop While (total <> current)
    49. cancel = False
    50. fromStream.Close()
    51. toStream.Close()
    52. End If