1
다음 코드를 사용하여 압축 한 후 압축을 풉니 다. 그러나 압축 해제 후 다른 길이의 문자열이 표시되고 압축 해제 된 문자열에서 몇 개의 문자가 누락됩니다.GZIP 압축 및 압축 해제
압축 :
ByteArrayOutputStream baos = new ByteArrayOutputStream();
GZIPOutputStream zos = new GZIPOutputStream(baos);
zos.write(text.getBytes());
zos.finish();
zos.flush();
byte[] udpBuffer = baos.toByteArray();
System.out.println("Compressed length: " + udpBuffer.length);
감압 :
GZIPInputStream gis = new GZIPInputStream(new ByteArrayInputStream(bytes));
BufferedReader br = new BufferedReader(new InputStreamReader(gis));
StringBuilder sb = new StringBuilder();
while (br.readLine()!= null) {
sb.append(br.readLine());
}
System.err.println(sb.toString());
텍스트 원래 길이 : 45,627 바이트
텍스트 압축 길이 : 3732 바이트
텍스트 압축 길이 : 20,328 바이트 (같아야한다 원본 길이)
내 원래 텍스트는 다음과 같이이다 :
<html>
<head>
<title></title>
</head>
<body>
<p><span class="preheader" style="display:none!important;mso-hide:all">Hey wazzup? </span></p>
<table align="center" border="0" cellpadding="0" cellspacing="0" width="640">
<tbody>
<tr>
<td align="center" height="30" style="font-size:11px;color:#333;font-family:Verdana,Geneva,sans-serif">
.
.
.
</tbody>
</body>
</html>
그리고 내 압축 해제 텍스트가 시작 태그가없는 참조 (같은오고, 또한
<title> tag, similarly many tags and other parts are missing from my uncompressed text:
<head></head><p><span class="preheader" style="display:none!important;mso-hide:all">
.
.
.
사람은 실수를 지적 할 수 있습니까? 아니면 이것은 예상 된 행동입니까?
작업을 수행했습니다! 감사! 그러나 첫 번째 버전에서 무엇이 잘못 되었습니까? – Arry
"while (br.readLine()! = null)"은 행을 읽고 행이 null인지 여부를 확인합니다. "sb.append (br.readLine())"는 NEXT 행을 읽고이를 StringBuilder에 추가합니다. "while (br.readLine()! = null)"에서 읽은 행은 StringBuilder에 추가되지 않고 간단히 버려집니다. –