Ciao, Ho un problema che non risco a risolvere. Scarico da internet sul mio cell android un file pippo.zip. Ora devo unzippare tale file in una cartella che stia nella stessa directory dello zip e che abbia lo stesso nome........ovvero in questo caso devoc reare la cartella pippo.

Su internet ci sono tantissimo esempi, ma con tutti ho lo stesso problema, ovvero se il mio pippo.zip contiene solo file 1,10,100 tutto funziona........se invece il file contiene dell cartelle non funziona una mazza.
Della serie dentro il file zip ho file1.mp3 e una cartella Myfolder che a sua volta contiene file2.mp3
e file3.mp3
pippo.zip->
Myfolder->
file2
file3
file1.


In quest caso lui scorre le entri, ma quando becca la cartella quello che io mi aspetto è che riconosca che è una cartella e ne crei una, dopo di che guardi il contenuto veda che sono file e li copi nella cartella appena creata. Poi trova file1 e lo mette invece sotto la cartella principale(cmq è ininfluente l'ordine con cui scorre i file all'interno.

Il mio codice è questo:
codice:
public ArrayList unzip(InputStream inputStream, String destinationDir) throws IOException 
{ 
        ArrayList result = null; final int BUFFER = 2048;
        if (inputStream != null && destinationDir != null) 
    {
        result = new ArrayList();
        ZipInputStream zis = null;
        BufferedOutputStream bos = null;
        try {
            zis = new ZipInputStream(new BufferedInputStream(inputStream));
            ZipEntry entry = null;
            while((entry = zis.getNextEntry()) != null) 
            { //for each zip entry
                if (entry.isDirectory()) 
                { //directory
                    File dir = new File(destinationDir + File.separator + entry.getName());
                    dir.mkdirs();
                } 
                else 
                { //file
                    int count;
                    byte data[] = new byte[BUFFER];
                    String fileName = destinationDir + File.separator + entry.getName();
                    FileOutputStream fos = new FileOutputStream(fileName);
                    bos = new BufferedOutputStream(fos, BUFFER);
                    while ((count = zis.read(data, 0, BUFFER)) != -1) {
                        bos.write(data, 0, count);
                    }
                    bos.flush();
                    result.add(fileName);
                }
            }//next zip entry
            zis.close();
        } 
        finally
        {
            if (bos != null) { try { bos.close(); } catch (IOException ioe) { /* ignore */ } }
            if (zis != null) { try { zis.close(); } catch (IOException ioe) { /* ignore */ } }
        }
    }//else: input value unavailable

    return result;
}

Da quel che ho capito lui scoorre i file nello zip uno a uno e li mette in entry, poi controlla se sono cartelle o file e prosegue a seconda di quel che ha trovato.
Il problema è che se io stampo il campo entry, succede che invece d stampare solo folder e entrare nella sezione x gestire le cartelle, lui stampa folder/file2 che vede come il nome di un unico file e poi sclera senza dare nessun esito..........
Qualcuno mi sa illuminare?