tutorials.de-Buchverschenkaktion 08/2010
+ Auf Thema antworten
  1. #1
    access100 access100 ist offline Grünschnabel access100 hat eine blütenweiße Weste
    Registriert seit
    Apr 2008
    Beiträge
    2
    Servus Leute,

    ich hab da ein kleines Problem mit dem packen von Dateien direkt aus einem Archiv in ein zweites.

    Ich weiß, wie ich die Dateien von einem Archiv entpacken kann und dann die Dateien aus dem betimmten Verzeichnis wieder in ein neues Archiv packen kann, aber ich würde diesen Schritt gerne umgehen und direkt die Dateien aus dem ersten Archiv in das zweite Archiv schieben. Ich weiß nur nicht, wie ich die Dateien ansprechen kann, weil nur mit "ZipEntry.getName()" klappt das ganze nicht.

    Ist das möglich oder geht das nur über den Umweg entpacken -> neu packen

  2. #2
    Benutzerbild von zeja
    zeja zeja ist offline Moderator zeja kann auf vieles stolz sein zeja kann auf vieles stolz sein zeja kann auf vieles stolz sein zeja kann auf vieles stolz sein zeja kann auf vieles stolz sein zeja kann auf vieles stolz sein
    tutorials.de Moderator
    Registriert seit
    Sep 2006
    Beiträge
    2.898
    Versuch mal mit einem ZipInputStream vom Zip zu lesen. Dort kommst du mit nextEntry immer einen Eintrag weiter. Von nem Entry kannst du dir mit getSize die Länge geben lassen und dann auf den InputStream mit read dieses Entry in ein ByteArray einlesen und dieses dann mit nem ZipOutputStream wieder schreiben. Mit skip kannst du Einträge überspringen die dich nicht interessieren. Ob das so wirklich effizient ist weiß ich allerdings nicht. Kannst ja mal probieren

  3. #3
    Benutzerbild von Sascha Schirra
    Sascha Schirra Sascha Schirra ist gerade online Hausmeister Sascha Schirra hat die Renommee-Anzeige deaktiviert
    tutorials.de Administrator
    Registriert seit
    May 2005
    Beiträge
    4.171
    Hallo,

    schau mal hier
    Code :
    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
    
    import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.util.Enumeration;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipFile;
    import java.util.zip.ZipOutputStream;
     
     
    public class ZipFileExample {
     
        /**
         * @param args
         */
        public static void main(String[] args) throws Exception {
            File archiveFile = new File("/home/sash/Downloads/Firefox/jdk-6-doc.zip");
     
            copy(archiveFile);
        }
     
        public static void copy(File archiveFile)
                throws Exception {
     
            File newFile = new File("/home/sash/NewZip.zip");
     
            ZipFile zipSrc = new ZipFile(archiveFile);
     
            ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(newFile));
     
            Enumeration srcEntries = zipSrc.entries();
            while (srcEntries.hasMoreElements()) {
                ZipEntry entry = (ZipEntry) srcEntries.nextElement();
                ZipEntry newEntry = new ZipEntry(entry.getName());
                zos.putNextEntry(newEntry);
     
                BufferedInputStream bis = new BufferedInputStream(zipSrc
                        .getInputStream(entry));
     
                while (bis.available() > 0) {
                    zos.write(bis.read());
                }
                zos.closeEntry();
     
                bis.close();
            }
     
            
     
     
            zos.finish();
     
            zos.close();
     
            zipSrc.close();
     
        }
     
    }


    Du musst jetzt nur noch eine IF-Anweisung reinpacken und damit dann nur die Entries wählen, die auch ins neue File rein sollen. Im Moment werden einfach alle reingepackt.

    MFG

    Sascha
    Niveau von unten betrachtet wird meistens mit Arroganz verwechselt. ;-)

    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  4. #4
    access100 access100 ist offline Grünschnabel access100 hat eine blütenweiße Weste
    Registriert seit
    Apr 2008
    Beiträge
    2
    Servus,

    hey Leute vielen Dank für die Hilfe.

    @Sascha Schirra: Super Code, funktioniert einwandfrei. Besten Dank

Ähnliche Themen

  1. Zip-Archiv erstellen
    Von sebastianv im Forum PHP
    Antworten: 7
    Letzter Beitrag: 03.05.06, 18:22
  2. .ZIP Archiv erstellen
    Von proprogger im Forum .NET Datenverwaltung
    Antworten: 2
    Letzter Beitrag: 08.01.06, 18:01
  3. Antworten: 1
    Letzter Beitrag: 15.08.05, 15:52
  4. Dateien in ein Zip-Archiv hinzufügen
    Von Sascha Schirra im Forum Java
    Antworten: 10
    Letzter Beitrag: 01.06.05, 19:43
  5. ZIP-Archiv kaputt
    Von ElFunghi im Forum Microsoft Windows
    Antworten: 4
    Letzter Beitrag: 11.04.03, 00:45

Lesezeichen

Lesezeichen