BackUpTool für ein Programm

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 24 Antworten in diesem Thema. Der letzte Beitrag () ist von INOPIAE.

    Hallo

    Ich bräuchte mal Hilfe zu dem Extrahieren eines ZipArcives.
    Ich zippe ein Verzeichnis in dem Dateien liegen und ein Weiteres Verzeichnis mit Dateien.

    Quellcode

    1. Die Daten:
    2. C:\Wetterdaten\01-2023.xml
    3. C:\Wetterdaten\Jahresdaten\Abschluss2023.xml
    4. Das Zipfile:
    5. LW:\Wetterbackup\BackUp_30_05_2023_22_32.zip


    Das zippen klappt alles bestens. Wenn ich nun versuche das Zip zu entpacken bekomme ich Fehler über Fehler.
    Das einzigste was hier hilft, sofern die Verzeichnisse noch nicht existieren ist, vorher die Verzeichnisse neu anzulegen und dann zu entpacken.
    Das kann doch nicht sein oder??

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class RestoreManager
    2. Private _directoryManager As DirectoryManager
    3. Public Sub New(directoryManager As DirectoryManager)
    4. _directoryManager = directoryManager
    5. End Sub
    6. Public Event RestoreCompleted As EventHandler
    7. Public Event RestoreFailed As EventHandler(Of Exception)
    8. Public Property backupName As String
    9. Public Async Function RestoreData(backupName As String) As Task
    10. ' Zielverzeichnisse erstellen, falls sie nicht vorhanden sind
    11. Try
    12. 'Test Begin
    13. Dim hauptverzeichnis As String = Path.Combine(_directoryManager.RestoreTargetDirectoryPath, _directoryManager.AppDaten)
    14. Dim unterverzeichnis As String = Path.Combine(hauptverzeichnis, "Jahresdaten")
    15. If Not Directory.Exists(hauptverzeichnis) Then
    16. System.IO.Directory.CreateDirectory(hauptverzeichnis)
    17. End If
    18. If Not Directory.Exists(unterverzeichnis) Then
    19. Directory.CreateDirectory(unterverzeichnis)
    20. End If
    21. 'Test Ende
    22. Dim targetDirectory As String = Path.Combine(_directoryManager.RestoreTargetDirectoryPath, _directoryManager.AppDaten)
    23. Debug.WriteLine("Laufwerk / Pfad / BackupName :" & backupName)
    24. Debug.WriteLine("Ziellaufwerk: " & targetDirectory & " Quellaufwerk: " & backupName)
    25. Dim selectedZipFile As String = Path.Combine(backupName)
    26. ' Extrahieren der Dateien aus dem Zip-Archiv
    27. Using archive As ZipArchive = ZipFile.OpenRead(backupName)
    28. For Each entry As ZipArchiveEntry In archive.Entries
    29. Dim entryPath As String = Path.Combine(targetDirectory, entry.FullName)
    30. ' Extrahieren der Datei
    31. Await Task.Run(Sub() entry.ExtractToFile(entryPath, True))
    32. Next
    33. End Using
    34. Debug.WriteLine("Zip-Datei erfolgreich extrahiert.")
    35. ' Anzeige der MessageBox mit der Auflistung der restaurierten Dateien
    36. Dim filesInTargetDirectory As String() = Directory.GetFiles(targetDirectory, "*", SearchOption.AllDirectories)
    37. Dim fileListMessage As String = "Die folgenden Dateien wurden erfolgreich restauriert:" & Environment.NewLine & Environment.NewLine
    38. fileListMessage &= String.Join(Environment.NewLine, filesInTargetDirectory)
    39. MessageBox.Show(fileListMessage, "Restaurierung erfolgreich", MessageBoxButtons.OK, MessageBoxIcon.Information)
    40. Catch ex As Exception
    41. RaiseEvent RestoreFailed(Me, ex)
    42. End Try
    43. RaiseEvent RestoreCompleted(Me, EventArgs.Empty)
    44. End Function
    45. End Class

    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Na ja, die Ablagestruktur muss schon vorhanden sein.

    Warum extrahierst Du jede Datei einzeln und nicht einen ganzen Ordner mit ZipFileExtensions.ExtractToDirectory learn.microsoft.com/de-de/dotn…ttodirectory?view=net-7.0 ?
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    mit ZipFileExtensions.ExtractToDirectory


    Das hatte ich ja versucht. Da tauchten immer neue Fehler auf. :cursing:
    Datei nicht gefunden, Ziparcive beschädigt usw.
    Hab Stunden mit dem Debugen verbracht und bin nicht weiter gekommen. ;(
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh: