我有以下用于压缩和解压缩字符串的代码。
public static byte[] compress(String str)
{
try
{
ByteArrayOutputStream obj = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(obj);
gzip.write(str.getBytes("UTF-8"));
gzip.close();
return obj.toByteArray();
}
catch (IOException e)
{
e.printStackTrace();
}
return null;
}
public static String decompress(byte[] bytes)
{
try
{
GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(bytes));
BufferedReader bf = new BufferedReader(new InputStreamReader(gis, "UTF-8"));
StringBuilder outStr = new StringBuilder();
String line;
while ((line = bf.readLine()) != null)
{
outStr.append(line);
}
return outStr.toString();
}
catch (IOException e)
{
return e.getMessage();
}
}
我在windows上压缩成字节数组,然后通过socket将字节数组发送到linux并在那里解压缩。然而,在解压缩时,似乎我所有的换行符都消失了。
所以我认为问题是linux到windows的关系。但是,我尝试在使用它的 Windows 上编写一个简单的程序,发现换行符仍然消失了。
任何人都可以阐明是什么原因造成的吗?我想不出任何解释。