Comment puis-je convertir ZipInputStream à InputStream?
J'ai le code, où ZipInputSream est converti en byte[], mais je ne sais pas comment je peux convertir inputstream.
private void convertStream(String encoding, ZipInputStream in) throws IOException,
UnsupportedEncodingException
{
final int BUFFER = 1;
@SuppressWarnings("unused")
int count = 0;
byte data[] = new byte[BUFFER];
while ((count = in.read(data, 0, BUFFER)) != -1)
{
//How can I convert data to InputStream here ?
}
}
Qu'est-ce exactement que vous essayez de faire? Décompresser une seule entrée dans le flux?
Oui, je veux seul fichier à partir de flux de données en tant InputStream si c'est possible.
Double de Convertir InputStream de tableau d'octets en Java
Oui, je veux seul fichier à partir de flux de données en tant InputStream si c'est possible.
Double de Convertir InputStream de tableau d'octets en Java
OriginalL'auteur newbie | 2011-10-21
Vous devez vous connecter pour publier un commentaire.
ZipInputStream est une sous-classe InputStream.
http://download.oracle.com/javase/6/docs/api/java/util/zip/ZipInputStream.html
OriginalL'auteur ExtremeCoder
Voici comment j'ai résolu ce problème. Maintenant, je peux avoir des fichiers à partir de ZipInputStream à la mémoire comme InputStream.
Que vous devriez éviter pour cela, il sera la cause de OutOfMemoryError sur des fichiers volumineux. Au lieu de cela, vous pouvez utiliser le ZipInputStream. Voir stackoverflow.com/questions/20020982/...
Quelles sont les deuxième et troisième arguments pour? Ils ne sont pas utilisés du tout.
while ((count = en.read(buffer)) > 0) {out.write(BUFFER, 0, compteur);}
OriginalL'auteur newbie
Veuillez trouver ci-dessous un exemple de fonction qui va extraire tous les fichiers de l'archive ZIP. Cette fonction ne fonctionne pas avec les fichiers dans des sous-dossiers:
OriginalL'auteur vad
ZipInputStream
permet de lire ZIP contenu directement: itérer à l'aide degetNextEntry()
jusqu'à ce que vous trouviez l'entrée que vous souhaitez lire et puis il suffit de lire à partir de laZipInputStream
.Si vous ne voulez pas de simplement lire ZIP contenu, mais vous avez besoin d'appliquer un supplément de transformer le flux avant de passer à l'étape suivante, vous pouvez utiliser
PipedInputStream
etPipedOutputStream
. L'idée serait similaire à ceci (écrit à partir de la mémoire, pourrait même ne pas compiler):OriginalL'auteur gpeche
Le code postal est assez facile, mais j'ai eu des problèmes avec le retour des ZipInputStream comme Inputstream. Pour une raison quelconque, une partie des fichiers contenus dans le zip a les caractères d'être supprimé. Le ci-dessous a été ma solution et pour l'instant sa fonctionne.
OriginalL'auteur EdwinR