tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
731
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Perserhood Perserhood ist offline Rookie
    Registriert seit
    Mar 2010
    Beiträge
    8
    Hallo,
    ich hab folgendes Porblem.
    Ich hab mehrere zipdateien die auch ziemlich gross sind. Jetzt suche ich nach einer Datei die in einer zipdatei ist. ich weiss nur nicht in welcher. Gibt es eine möglichkeit nach den Dateinamen in der Zipdatei zu suchen
    und feststellen ob die Datei da überhaupt drin ist. da ich fürs entpacken aller zipdateien ewig brauchen würde.
    habt ihr eine ahnung wie ich das am besten implementieren könnte. Ich bin für jede Hilfe dankbar
     

  2. #2
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    Hi.

    Je nachdem wieviele Dateien es sind solltest doch auch manuell nachsehen können? Mit einem entsprechenden Packprogramm öffnen, und nachsehen was drinnen ist. Dabei wird ja noch nichts entpackt.

    Wenn es weniger Aufwand ist, schnell mal ein Programm zu erstellen, kannst dir aber die #ziplib ansehen.

    Hier ein Codebeispiel von denen. Es listet einfach die Dateien in einem Zipfile auf, und gibt diese gegebenenfalls auch aus.. diesen Teil brauchst aber ja nicht zu verwenden.

    lg,..

    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    
    // project created on 10.11.2001 at 13:09
    using System;
    using System.Text;
    using System.Collections;
    using System.IO;
    using System.Diagnostics;
    using System.Runtime.Serialization.Formatters.Binary;
     
    using ICSharpCode.SharpZipLib.BZip2;
    using ICSharpCode.SharpZipLib.Zip;
    using ICSharpCode.SharpZipLib.Zip.Compression;
    using ICSharpCode.SharpZipLib.Zip.Compression.Streams;
    using ICSharpCode.SharpZipLib.GZip;
     
     
    class MainClass
    {           
        public static void Main(string[] args)
        {
            // Perform simple parameter checking.
            if ( args.Length < 1 ) {
                Console.WriteLine("Usage ViewZipFile NameOfFile");
                return;
            }
            
            if ( !File.Exists(args[0]) ) {
                Console.WriteLine("Cannot find file '{0}'", args[0]);
                return;
            }
     
            // For IO there should be exception handling but in this case its been ommitted
            
            byte[] data = new byte[4096];
            
            using (ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]))) {
            
                ZipEntry theEntry;
                while ((theEntry = s.GetNextEntry()) != null) {
                    Console.WriteLine("Name : {0}", theEntry.Name);
                    Console.WriteLine("Date : {0}", theEntry.DateTime);
                    Console.WriteLine("Size : (-1, if the size information is in the footer)");
                    Console.WriteLine("      Uncompressed : {0}", theEntry.Size);
                    Console.WriteLine("      Compressed   : {0}", theEntry.CompressedSize);
                    
                    if ( theEntry.IsFile ) {
                        
                        // Assuming the contents are text may be ok depending on what you are doing
                        // here its fine as its shows how data can be read from a Zip archive.
                        Console.Write("Show entry text (y/n) ?");
                        
                        if (Console.ReadLine() == "y") {
                            int size = s.Read(data, 0, data.Length);
                            while (size > 0) {
                                Console.Write(Encoding.ASCII.GetString(data, 0, size));
                                size = s.Read(data, 0, data.Length);
                            }
                        }
                        Console.WriteLine();
                    }
                }
                
                // Close can be ommitted as the using statement will do it automatically
                // but leaving it here reminds you that is should be done.
                s.Close();
            }
        }
    }
     
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  3. #3
    Perserhood Perserhood ist offline Rookie
    Registriert seit
    Mar 2010
    Beiträge
    8
    Danke sowas ähnliches hab ich schon gefunden. mir gehts eher darum den namen einzugeben und ich krieg zurück ob er drin ist oder nicht. Also eher dass er selber vergleicht.. ich hab 100te von zip dateien manuel ist bisschen anstrengend auf dauer.
    Das Problem beim Vergleich ist auch das in der zipdatei der name mit pfad steht. also muss ich glaub ich beim suchen auch den pfad eingeben oder mit hilfe von contain es machen. ist net so leicht
     

  4. #4
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    Du kannst ja den Code oben trotzdem übernehmen. theEntry.name hat ja den Namen des Items.

    Über string.LastIndexOf kommst du an den letzten \-separator im Pfad und kannst dann vergleichen.
     

  5. #5
    Avatar von Alexander Schuc
    Alexander Schuc Alexander Schuc ist offline admin | crazy-weasel
    tutorials.de Administrator
    Registriert seit
    Aug 2001
    Ort
    Österreich, Stmk, Graz
    Beiträge
    2.783
    Sollte dann doch kein Problem sein? Du kennst den Dateinamen, du weisst wie du die ganzen Einträge in einer ZipDatei durchlaufen kannst, mehr brauchst doch nicht?

    Hier mal der entsprechende Teil abgeändert:

    Code csharp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
            string filename = "test.txt";
        
        using (ZipInputStream s = new ZipInputStream(File.OpenRead(args[0]))) {
            
                ZipEntry theEntry;
                while ((theEntry = s.GetNextEntry()) != null) {
     
                    if ( theEntry.IsFile && System.IO.Path.GetFilenNme(theEntry.Name) == filename ) {
                        Console.WriteLine("Found!");
                break;
                    }
                }
                
                // Close can be ommitted as the using statement will do it automatically
                // but leaving it here reminds you that is should be done.
                s.Close();
            }
     
    With the first link the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably.
    Aaron Satie

    Legends... are the spice of the universe, Mr. Data, because they have a way of sometimes coming true.
    Captain Jean-Luc Picard, Stardate ~41294.5

    Tutorials.de chattet. Hier gibts auch .net Support ^^
    Klickt auf chattet und nutzt den Webchat, oder verbindet euch zu irc.tutorials.de - Channel #Tutorials.de

    (moo)blog furred.net // SiteInfo für WP7 // Pastebin für WP7 // BlogEngine.net Extensions

  6. #6
    Perserhood Perserhood ist offline Rookie
    Registriert seit
    Mar 2010
    Beiträge
    8
    Vielen Dank, hab jedoch noch ein kleines Problem.
    Im Unternehmen nutzen wir nur ionic.zip.
    hab dazu nix gefunden weiss also nicht ob es mit dieser bib auch klappen würde
     

  7. #7
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    Ja, das müsste auch klappen, da ändern sich halt einfach die Namen der Funktionen, das grobe Vorgehen und die Namespaces, aber das Prinzip dürfte gleich sein.
     

  8. #8
    Perserhood Perserhood ist offline Rookie
    Registriert seit
    Mar 2010
    Beiträge
    8
    Ja hast recht, das müsste klappen. Ich suche grade wie die Funktionen bei ionic heissen müssen. Ist nicht so leicht da was zu finden
    ich find einfach nichts dazu, ist echt zum verzweifeln
    Geändert von Perserhood (19.04.10 um 13:13 Uhr)
     

  9. #9
    Perserhood Perserhood ist offline Rookie
    Registriert seit
    Mar 2010
    Beiträge
    8
    eine doofe Frage. Aber wo genau müsste ich denn im Code den Namen des Zipfiles schreiben?
     

  10. #10
    Cromon Cromon ist offline Mitglied Brillant
    Registriert seit
    Apr 2008
    Beiträge
    819
    na dawo auf gleichheit geprüft wird.
     

Ähnliche Themen

  1. Antworten: 8
    Letzter Beitrag: 02.01.09, 19:17
  2. Antworten: 1
    Letzter Beitrag: 01.02.08, 11:38
  3. Nach Zippen sind XML-Dateien Müll
    Von Java? im Forum Java
    Antworten: 2
    Letzter Beitrag: 01.02.08, 09:02
  4. Sonderzeichen in Dateinamen beim zippen
    Von jean luc im Forum Java
    Antworten: 1
    Letzter Beitrag: 30.10.07, 12:08
  5. Suchen/ Ersetzen von Dateinamen W2K
    Von zylon im Forum Microsoft Windows
    Antworten: 3
    Letzter Beitrag: 14.02.04, 05:34