Concepts
GZipinputstream est pour les flux (ou fichiers) zipée gzip (extension ".gz"). Il n'a aucune information d'en-tête.
GZipInputStream is for [zippeddata]
Si vous avez un vrai fichier zip, vous devez utilisateur ZipFile pour ouvrir le fichier, demandez la liste des fichiers (un dans votre exemple) et demandez le flux d'entrée décompressé.
ZipFile is for a file with [header information + zippeddata]
Votre méthode, si vous avez le fichier, serait quelque chose comme:
// ITS PSEUDOCODE!!
private InputStream extractOnlyFile(String path) {
ZipFile zf = new ZipFile(path);
Enumeration e = zf.entries();
ZipEntry entry = (ZipEntry) e.nextElement(); // your only file
return zf.getInputStream(entry);
}
La lecture d'un InputStream avec le contenu d'un fichier .zip
Ok, si vous avez un InputStream que vous pouvez utiliser (comme le dit @cletus) ZipInputStream. Il lit un flux incluant les données d'en-tête.
ZipInputStream is for a stream with [header information + zippeddata]
Important: si vous avez le fichier dans votre PC, vous pouvez utiliser ZipFile
classe pour accéder au hasard
Ceci est un exemple de la lecture d'un fichier zip à travers un InputStream:
import java.io.FileInputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class Main {
public static void main(String[] args) throws Exception
{
FileInputStream fis = new FileInputStream("c:/inas400.zip");
// this is where you start, with an InputStream containing the bytes from the zip file
ZipInputStream zis = new ZipInputStream(fis);
ZipEntry entry;
// while there are entries I process them
while ((entry = zis.getNextEntry()) != null)
{
System.out.println("entry: " + entry.getName() + ", " + entry.getSize());
// consume all the data from this entry
while (zis.available() > 0)
zis.read();
// I could close the entry, but getNextEntry does it automatically
// zis.closeEntry()
}
}
}
Qu'avez-vous déjà essayé? S'il vous plaît ajouter un exemple de code. –