tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
1678
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von NSR
    NSR NSR ist offline Mitglied Silber
    Registriert seit
    Nov 2008
    Beiträge
    94
    Sers Leute,
    (Link zu der Seite wos die dll gibt: http://www.codeplex.com/DotNetZip)
    mein Problem ist nicht, wie man ein Zip erstellt. Des weiß ich schon nämlich so:
    Code :
    1
    2
    3
    4
    
    using (ZipFile zip = new ZipFile())
    {
        zip.Save(sfd.FileName);   //sfd = SaveFileDialog
    }

    Das hinzufügen von dateien ist auch kein Problem:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    zFile = new ZipFile(ofd.FileName);    //ofd = OpenFileDialog
     
    foreach (string var in ofd.FileNames)
    {
        try    //try und catch, damit man nicht extra überprüfen muss, obs die Datei schon gibt.
        { zFile.AddFile(var); }
        catch (ArgumentException)
        { }
    }
    zFile.Save();

    Mein Problem ist, dass es das Zip immer mit "Unterverzeichnisse Einbeziehen" speichert. D.h. dass beim entpacken immer die Ordner, die zu der Datei führen mit gespeichert werden. (z.b. Datei liegt unter Desktop -> Beim entpacken sind vor dem File die Ordner "Dokumente und Einstellungen, ... , Desktop"). Kann mir einer von euch vielleicht helfen und sagen wie ich das Abgeschaltet bekomme?.
    Habe schon aber ohne Erfolg bzw. war auch alles auf Enlisch und des isch meins nicht so gut, könnte also auch theoretisch sein dass ichs einfach überlesen hab . Hab auch die Funktionen der Ionic dll durchgesehen, aber da da nirgends eine Intelicense Hilfe dabei ist bin ich da nicht weit gekommen.
    Wäre echt toll, wenn einer von euch mir sagen kann wie des geht. Danke schon einmal im vorraus.
    Grüße Nico.
    Geändert von NSR (31.08.09 um 10:05 Uhr)
     

  2. #2
    Avatar von NSR
    NSR NSR ist offline Mitglied Silber
    Registriert seit
    Nov 2008
    Beiträge
    94
    Also hab jetzt beim weiteren Rumspielen was gefunden.
    Und zwar kann man anstatt
    Code :
    1
    
    zFile.AddFile(var);
    auch
    Code :
    1
    
    zFile.AddFile(var,"");
    schreiben, was dazu führt, dass der Pfad der Datei = "" ist also nichts.
    Dann sind beim entpacken die Ordner nicht dabei. (Mit WinZip rechtsklick auf die .zip datei und Extrahieren in den Ordner (was das gleiche ist wie "hier entpacken") erstellt winzip einen Ordner mit dem Namen der zip datei und entpackt dort die ganzen sachen.
     

  3. #3
    Avatar von NSR
    NSR NSR ist offline Mitglied Silber
    Registriert seit
    Nov 2008
    Beiträge
    94
    Bei einer anderen Möglichkeit die Datei ohne Pfad zu speichern bin ich auf ein Phänomen gestoßen, für dass ich keine Erklärung habe. Vielleicht kann mir ja einer von euch sagen warum es dass tut was es tut.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    foreach (string var in ofd.FileNames)      //ofd = OpenFileDialog
    {
        //Damit keine Unterordner gespeichert werden.
        string a;
        a = var.Remove(0,var.LastIndexOf("\\"));    //Es wird der Pfad bis zum letzten \ entfernt
        a = a.Remove(0,1);                         //Das letzte \ wird entfernt;  a = Dateiname.
        try
        { zFile.AddFile(a); }
        catch (ArgumentException)
        {}
    }

    Das Phänomen ist, dass es Funktioniert, und die Datei dem Zip hinzugefügt wird.
    Hab's auch mit Dateien probiert, die nicht auf dem Desktop liegen und auch mit welchen von einer anderen Platte z.B. (D:\\) liegen. Funktioniert alles. Aber wieso. Der Pfad der Datei existiert doch nicht mehr?
    Grüße Nico
     

  4. #4
    Registriert seit
    Feb 2004
    Ort
    Leinfelden-Echterdingen
    Beiträge
    781
    Wie das herumgestrippe da oben trotzdem funktioniert, kann ich dir nicht sagen.

    Um die Ordnerstruktur zu erhalten musst du als ersten Parameter den Pfad zur Datei angeben und im zweiten Argument wird der Pfad erwartet, in dem die Datei gespeichert werden sollst.

    Wenn man jetzt also mehrere Dateien und Ordner auswählt musst du als zweiten parameter eben immer den Ordnerpfad ohne den höchsten auswählen.
     
    Bitte dran denken!
    Wenn eure Frage geklärt ist, markiert nach eurer Antwort den Thread als erledigt und bewertet die Antworten

  5. #5
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Um nur Dateinamen ohne Pfad hinzuzufügen:
    Code csharp:
    1
    
    zipfile.AddFile(path, System.IO.Path.GetFileName(path));
    Kann es sein, das du das Arbeitsverzeichnis wechselst?

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. Mit Ionic zippen
    Von Perserhood im Forum .NET Café
    Antworten: 4
    Letzter Beitrag: 31.03.10, 12:40
  2. Ant: Release Dateien zippen?
    Von DarthShader im Forum Java
    Antworten: 2
    Letzter Beitrag: 31.08.09, 09:56
  3. Nach Zippen sind XML-Dateien Müll
    Von Java? im Forum Java
    Antworten: 2
    Letzter Beitrag: 01.02.08, 09:02
  4. Dateien zippen
    Von Yamah im Forum PHP
    Antworten: 2
    Letzter Beitrag: 15.09.04, 11:22
  5. Antworten: 3
    Letzter Beitrag: 15.07.01, 01:25