DotNetZip Startuppath packen

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

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von BlueSoftware.

    DotNetZip Startuppath packen

    Hi Leute,
    vorweg: wenn ich hier im falschen Bereich bin es tut mir leid. :S

    Ich habe gerade ein kleines Problem mit DotNetZip.
    Und zwar mlchte ich einen Ordner namens "Data" packen , was ich mit dem Befehl

    Quellcode

    1. Dim zipFileName As String = “MyZipFile.zip”
    2. Dim fileNames As String() = Directory.GetFiles(Application.StartupPath & "/Data")
    3. Using zip As Ionic.Zip.ZipFile = New Ionic.Zip.ZipFile
    4. For Each file In fileNames
    5. zip.AddFile(file)
    6. Next
    7. zip.Save(zipFileName)
    8. End Using


    antelle.
    Dabei ist das Problem das der bei Application.Startuppath nicht nur den einen Ordner nimmt, sondern den kompletten Pfad. Also "C:\Users\Name\Doc..."

    Falls jemand weiss wo dies schon beschrieben ist, oder mir helfen kann, wäre ich sehr dankbar :)

    Gruß,
    Moritz
    @ChOoSeMyNaMe Werde es gleich mal probieren danke ;)

    //edit

    Quellcode

    1. Dim fileNames As String() = Directory.GetFiles(Path.Combine(Application.StartupPath & "\Data\"))

    funktioniert leider nicht. Er verpackt trotzdem den ganzen unterordner...

    Auch "\data\" hat nicht geholfen.
    Hast du noch eine Idee?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „BlueSoftware“ ()

    Das Probleme habe ich ebend auch gehabt.

    VB.NET-Quellcode

    1. ​zip.AddFile(file, "")


    Der zweite Parameter bestimmt in welchen Ordner die Datei abgespeichert werden soll, wird der Parameter freigelassen wird der Pfad vom Dateisystem übernommen.
    @ThuCommix Danke ich werde das gleich mal ausprobieren :)

    Vielen Dank es hat Funktioniert!
    hier noch einmal die Lösung:

    Spoiler anzeigen

    Quellcode

    1. zip.AddFile(file, "Data")


    Der komplette zusammenhängende Code ist
    Spoiler anzeigen

    Quellcode

    1. [spoiler]
    2. Dim zipFileName As String = “zipDatei.zip”
    3. Dim fileNames As String() = Directory.GetFiles(Application.StartupPath & "\Data")
    4. Using zip As Ionic.Zip.ZipFile = New Ionic.Zip.ZipFile
    5. For Each file In fileNames
    6. zip.AddFile(file, "Data")
    7. Next
    8. zip.Save(zipFileName)
    9. End Using[/spoiler]


    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „BlueSoftware“ ()

    BlueSoftware schrieb:

    @ChOoSeMyNaMe Werde es gleich mal probieren danke ;)

    //edit

    Quellcode

    1. Dim fileNames As String() = Directory.GetFiles(Path.Combine(Application.StartupPath & "\Data\"))

    funktioniert leider nicht. Er verpackt trotzdem den ganzen unterordner...

    Auch "\data\" hat nicht geholfen.
    Hast du noch eine Idee?

    "\Data\" kann nicht funktionieren, weil der vordere Backslash im Grunde "root-Directory des Laufwers" sagt. (Deshalb ist in der Konsole auch "cd \" der Weg um wieder ins Rootverzeichnis zu kommen.)
    Directory.GetFiles(Path.Combine(Application.StartupPath & "Data\") sollte gehen.



    Übrigens, gibt es einen Grund, warum du DotNetZip anstatt System.IO.Compression.ZipFile benutzt?
    | Keine Fragen per PN oder Skype.
    Das stimmt, aber im Tag hast Du .NET 4.5 stehen, daher hat er wohl gefragt.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    @BlueSoftware Dass das Problem schon gelöst ist, war mir bewusst. Wollte nur ne kurze Erklärung für das Problem mit Path.Combine nachliefern. :D

    Und yep, wie @Trade gesagt hat, hast du als Framework 4.5 angegeben, deshalb hab ich nachgefragt, warum du nicht die frameworkinterne Variante benutzt.
    | Keine Fragen per PN oder Skype.