Java:如何恢复使用python&#z; zlib编码器压缩的字符串数据

时间:2015-09-28 09:54:34

标签: java python compression zlib

我通过套接字将数据从python发送到java。

所以在python 2.7方面我有:

s = "this is test str"
compressed = s.encode('zlib')
push_to_tcp_socket(compressed)

所以我需要在java端恢复初始字符串。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

您需要发送字符串的长度,或者关闭连接,以便知道最后一个字节的位置。

最有可能帮助您的类是DeflatorInputStream,您可以在读取字节后使用它。这是zlib类的裸包装器。我没有测试它与python一起使用,但它是你最好的选择。

您可以尝试其他压缩,如Snappy或LZ4,它们具有跨平台支持。

答案 1 :(得分:0)

我假设您已经了解Java上的网络部分。您可以使用Inflater类来获取javadocs中的字符串

 // Decompress the bytes
 Inflater decompresser = new Inflater();
 decompresser.setInput(output, 0, compressedDataLength);
 byte[] result = new byte[100];
 int resultLength = decompresser.inflate(result);
 decompresser.end();
 //Then create string in java i assumed you are using python 2 and string is ASCII
 String str = new String(result,"US-ASCII")