2015-08-19 13 views
6

Ich versuche, eine ZIP-Datei vom Server zu bekommen. Im mit HttpURLConnection Input zu bekommen und das ist, was ich habe:So entpacken Sie die Datei von InputStream

myInputStream.toString().getBytes().toString() is equal to [[email protected] 

byte[] bytes = Base64.decode(myInputStream.toString(), Base64.DEFAULT); 
String string = new String(bytes, "UTF-8"); 
string == �&ܢ��z�m����y.... 

ich wirklich versucht, diese Datei zu entpacken, aber nichts funktioniert, gibt es auch so viele Fragen, sollte ich GZIPInputStream oder ZipInputStream? Muss ich diesen Strom als Datei zu speichern, oder ich kann auf Input arbeiten

Bitte helfen Sie, mein Chef wird langsam ungeduldig: O Ich habe keine Ahnung, was in dieser Datei ist muss ich herausfinden :)

+1

Check [diese] (http://stackoverflow.com/a/3223510/916225) zum Herunterladen –

+0

Schreib diese zip Datei auf SD-Karte und dann versuchen, es zu entpacken. Vergessen Sie nicht, Lese- und Schreibberechtigung zu geben – AmniX

+0

Die Verwendung von 'inputStream.toString()' tut sicherlich nicht, was Sie denken, dass es tut. Genauso wie 'java.io.File.toString()' den ** Inhalt ** einer Datei nicht als String, sondern als etwas anderes (den Pfad der Datei) ausgibt, was nutzlos ist, wenn Sie sich für den Inhalt interessieren . – GPI

Antwort

-1

grundsätzlich durch Einstellung inputStream zu GZIPInputStream sollte in der Lage sein, den tatsächlichen Inhalt zu lesen. auch die Einfachheit halb IOUtils Paket von apache.commons Verwendung machen Sie das Leben leicht

das für mich funktioniert:

InputStream is ; //initialize you IS 
    is = new GZIPInputStream(is); 
    byte[] bytes = IOUtils.toByteArray(is); 
    String s = new String(bytes); 
    System.out.println(s); 
+1

Während dieser Code das Problem des OP lösen kann, wären ein paar erklärende Worte für zukünftige Leser noch hilfreicher. – Thom

+1

@TheThom yeah ähm richtigen Kumpel, tut mir leid, ich war zu der Zeit der Post ein wenig beschäftigt. Ich habe meinen Beitrag bearbeitet. – nafas

-1

Normalerweise gibt es keinen signifikanten Unterschied zwischen GZIPInputStream oder ZipInputStream, so überhaupt, wenn, sollen beide arbeiten.

Als nächstes müssen Sie identifizieren, ob der gezippte Stream Base64-codiert war, oder die Base64-kodierten Inhalte wurden in einen gezippten Stream eingefügt - von dem, was Sie zu Ihrer Frage gestellt haben, scheint es die letztere Option zu sein.

So sollten Sie

ZipInputStream zis = new ZipInputStream(myInputStream); 
ZipEntry ze = zis.getNextEntry(); 
InputStream is = zis.getInputStream(ze); 

versuchen und von dort gehen ...

+0

Müll. Once ist eine Stream-Komprimierungsmethode: Die andere ist ein System zum Komprimieren eines Dateisatzes. – EJP

+0

@EJP: Selbst wenn etwas als Müll deklariert wird, wäre der korrekte Wortlaut zu begrüßen: ONE ist eine Stream-Komprimierungsmethode (GZIPInputStream), die andere ist eine Methode zum Komprimieren eines Dateisatzes (ZipInputStream). Und einige weitere Details, warum die Antwort Müll sein sollte, wäre auch schön - und wenn Sie es besser wissen, warum haben Sie die Frage nicht beantwortet? – tquadrat

Verwandte Themen