Kopieren mit Progressbar

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Nevok.

    Kopieren mit Progressbar

    Guten Abend

    Ich möchte einen Ordner kopieren. Das kopieren ist ja einfach ... nur das Anzeigen in der Progressbar verstehe ich nicht. Ich möchte das der Fortschritt in einer Progressbar angezeigt wird. Ich möchte auch das die Verarbeitete Datenemegneg in einem Label angezeigt wird. z.B. 15,8 von 20,6 MB kopiert. Ich würde mich über einen Code oder eine verständliche Anleitung freuen.

    MFG
    Nevok
    Code Nein.

    Stichpunkte ja:

    1. Dateianzahl einlesen
    2. Gesamtgröße einlesen
    3. Progressbar MAX auf Dateianzahl stellen
    4. Im Loop jede Datei kopieren und wenn Sie fertig ist Progressbar +1 und Dateigröße anzeigen (Aktuell kopierte / Gesamt)

    LG
    Habe ich die Daten richtig eingelesen ?

    VB.NET-Quellcode

    1. Dim dateien() As String = Directory.GetFiles("C:\Users\" & Form2.TextBox1.Text & "\Desktop\Saves")
    und wie kann ich die Progressbar auf max setzen ?
    Das mit dem Loop kann ich mir auch nicht vorstellen. Wie kann ich auslesen wenn eine Datei kopiert ist ?

    VB.NET-Quellcode

    1. ProgressBar.Maximum = AnzahlDerDateien


    VB.NET-Quellcode

    1. For Each datei As String in dateien()
    2. IO.File.Copy(datei....)
    3. ProgressBar.Value +=
    4. Next


    Hoffe das hilft.

    LG
    Mein Post wurde wohl verschluckt.

    Um einen wirklichen Fortschritt zu sehen:

    -Dateigröße abfragen (FileInfo) -> Long
    -Alle Addieren -> MaxValue
    -Via StreamReader/Writer kopieren mit bestimmter Buffergröße, Progressbar.StepSize = Buffergröße, nach jedem Read/Write-Zyklus dann Progressbar.PerformStep() und Application.DoEvents()
    Den Thread gibt es im Hauptforum und in Grundlagen. Diee Ordnungswidrigkeit hat auch mich verwirrt, bis hal2000 mich darauf aufmerksam gemacht hat, dass es sich um ein Crossposting hadelt.

    hit unterlasse die in Zukunft, wie du siehst, hat ein Thread zu Beantwortung gereicht.
    Ja das mit dem Toppelthread iss mir auch aufgefallen da ich es gepostet habe und ich mir nicht durchgelesen habe das es erst von einem admin oder so reingestellt wird. :D also habe ich es mal hier in diesem thread gepostet und schwups iss der andere auch oben :D also sorry deswegen.
    Bei Deiner Frage sehe ich meinen Salamander vor mir (Explorer-Ersatz).
    Falls größere Dateien kopiert werden sollen, ist es vielleicht sinnvoll, den Kopierfortschritt innerhalb einer Datei angezeigt zu bekommen. Dazu musst Du aber Systemroutinen nutzen, die Dir mitteilen, wie weit sie sind. Oder Du programmierst den Copybefehl zu Fuß (das ist eine gute Übung), liest die Dateien blockweise aus und schreibst die Blöcke in die Zieldatei, so kannst Du Deine Progressbar selbst informieren.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wieso macht ihr es eigentlich so kompliziert, im My-Namespace gibt es sowas bereits. Nach meiner Meinung kann man da ne Ausnahme machen und den My-Namespace für die 2 Sachen verwenden.

    VB.NET-Quellcode

    1. My.Computer.FileSystem.CopyDirectory("D:\verzeichnis1", "D:\verzeichnis2", FileIO.UIOption.AllDialogs)
    2. My.Computer.FileSystem.CopyFile("D:\datei1.exe", "D:\datei.exe", FileIO.UIOption.AllDialogs)