文字列を圧縮および解凍するための次のコードがあります。
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でバイト配列に圧縮し、ソケットを介してバイト配列をLinuxに送信し、そこで解凍します。ただし、圧縮を解除すると、改行文字がすべてなくなったようです。
それで、問題はLinuxとWindowsの関係にあると思いました。ただし、それを使用するウィンドウで簡単なプログラムを作成しようとしましたが、改行がまだなくなっていることがわかりました。
何が原因であるかについて、誰かが光を当てることができますか? 説明がわかりません。