0
我使用下面的代碼來解壓縮即將通過socket.io
到達的數據。java.io.IOException:未知格式
當解壓縮已經以壓縮格式發送的數據時,下面的代碼很有效。 (從Node.js發送的僞數據:<Buffer a8 b2 ...>
)
但是,當解壓已經在JSONArray中發送的數據時,我得到了java.io.IOException: unknown format
錯誤。 (僞它從Node.js的發送的數據:[<Buffer a8 b2 ..>, <Buffer c4 f0 ..>]
)
mSocket.on("fired", new Emitter.Listener() {
@Override
public void call(final Object... args) {
JSONArray compressedDataArray = (JSONArray) args[0];
byte[] compressedData = compressedDataArray.getString(0).toString().getBytes();
String unzipped = new String(decompress(compressedData));
Log.v("SAMPLE_TAG", "unzipped: " + unzipped) // LOGGING THE RESULT
}
})
public byte[] decompress(byte[] data) throws IOException {
ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream();
GZIPInputStream gzipIS = new GZIPInputStream(new ByteArrayInputStream(data));
byte[] buffer = new byte[1024];
int len;
while ((len = gzipIS.read(buffer)) > 0) {
byteArrayOS.write(buffer, 0, len);
}
byteArrayOS.close();
gzipIS.close();
return byteArrayOS.toByteArray();
}
是否有任何機會,以解決這個問題?
解壓縮未壓縮的JSONArray的原因是什麼? – andih
我已經在Redis上壓縮數據。在某些情況下,我必須將多個壓縮數據返回給用戶。因此,我將壓縮數據添加到數組中然後發送。 – efkan
另一種說法'compressedDataArray.getString(0).toString()'最後一個'toString()'似乎是多餘的。 'getString(index)'已經返回一個'String' – andih