문자열 압축 및 압축 해제를위한 다음 코드가 있습니다.GZIP는 개행 문자를 사용합니다.
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에서 바이트 배열로 압축 한 다음 소켓을 통해 바이트 배열을 보내서 거기에서 압축을 풉니 다. 그러나 압축을 풀면 모든 개행 문자가 사라진 것처럼 보입니다.
그래서 나는 문제가 리눅스 관계에 윈도우 관계라고 생각. 그러나 그것을 사용하는 Windows에서 간단한 프로그램을 작성하려고 시도하고 개행이 사라 졌음을 발견했습니다.
아무도 그 원인을 밝힐 수 있습니까? 나는 어떤 설명도 이해할 수 없다.
당신이 옳았습니다. 'read()'는 방금 실패했지만, 내 경우에는'.append ("\ n")'이 작동하고 추가 줄 바꿈을 얻었지만 지금까지는 발생하지 않았다면 괜찮습니다. – Quillion