tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
662
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    -ben- -ben- ist offline Mitglied Silber
    Registriert seit
    Sep 2005
    Beiträge
    71
    Hallo zusammen

    Folgender UseCase: Ich erhalte über's Netz Daten welche gezippt sind als byte[] zugesendet. Dieses Zip-File würde ich nun In-memory entpacken (ohne ein temporäres File auf der HD anzulegen) und die enthaltenen Dateien weiterverarbeiten.

    Folgender Code dazu:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    public void importAsZip(InputStream in) {
        
        ZipInputStream zipInputStream = new ZipInputStream(in);
        ZipEntry entry = null;
        
        try {
            while((entry = zipInputStream.getNextEntry()) != null) {
                // TODO
            }
        } catch (IOException e) {
            // errorhandling
        } finally {
            // close stream
        }
    }

    Ich sehe momentan keine Möglichkeit mithilfe des offiziellen Java-ZIP-API's (http://java.sun.com/j2se/1.5.0/docs/...e-summary.html) dieses Problem zu lösen Ich möchte auf Zeile 8 anstelle des TODO's den Inhalt der gepackten Dateien weiterverarbeiten..

    Wenn ich die Daten aus einer persistenten Datei lesen würde, gäbe es kein Problem. Dies könnte ich über die Methode getInputStream(ZipEntry entry) der Klasse ZipFile erledigen. Jedoch habe ich keine Instanz von ZipFile da das ganze in-memory geschehen soll...

    Wer kann mir weiterhelfen?

    Vielen Dank und Gruss
     

  2. #2
    Avatar von joschi70
    joschi70 joschi70 ist offline Mitglied Gold
    Registriert seit
    Sep 2008
    Beiträge
    143
    Hi -ben-,

    hab mich nicht so sehr mit ZIP Files beschäftigt, aber eventuell könnte man das so machen:

    Code java:
    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
    
    public class ZipTest {
     
        public byte[] getZipEntryContent(File file, String zipEntryName) throws IOException {
            byte[] buf = new byte[(int)file.length()];
            FileInputStream fis = new FileInputStream(file);
            fis.read(buf);
            fis.close();
            
            ZipInputStream zis = new ZipInputStream(new ByteArrayInputStream(buf));
            ZipEntry ze;
            
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            
            while((ze = zis.getNextEntry()) != null) {
                if(ze.getName().equals(zipEntryName)) {
                    byte zeBuff[] = new byte[(int)ze.getSize()];
                    zis.read(zeBuff);
                    bos.write(zeBuff);
                }
            }
            bos.close();
            zis.close();
            
            return bos.toByteArray();    
        }
        
        
        
        public static void main(String[] args) throws IOException {
            ZipTest tz = new ZipTest();
            byte[] res = tz.getZipEntryContent(new File("test.zip"), "bla2.txt");
            System.out.println(new String(res));
            
        }
    }

    Gruß
    joschi
     

Ähnliche Themen

  1. Zip-Files entpacken.
    Von TvP im Forum PHP
    Antworten: 4
    Letzter Beitrag: 23.12.07, 19:42
  2. Antworten: 1
    Letzter Beitrag: 09.10.07, 17:11
  3. Probleme beim entpacken von Zip-files mit Java
    Von torsch2711 im Forum Java
    Antworten: 2
    Letzter Beitrag: 13.02.06, 12:26
  4. Toolbar im Explorer - Inhalt eines Files ausgeben
    Von TimSz im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 21.02.05, 16:17
  5. Statt Position eines MC dessen Zeitleiste ansteuern
    Von intercorni im Forum Flash Plattform
    Antworten: 1
    Letzter Beitrag: 24.03.04, 20:48