Igo*_*sov 1 java byte gzipoutputstream
我需要将字符串转换为 gzip base64。我有这个代码
import java.util.zip.GZIPOutputStream;
import org.apache.commons.codec.binary.Base64OutputStream;
public class Test {
public static void main(String[] args) {
String text = "a string of characters";
try {
ByteArrayOutputStream os = new ByteArrayOutputStream();
Base64OutputStream b64os = new Base64OutputStream(os);
GZIPOutputStream gzip = new GZIPOutputStream(b64os);
gzip.write(text.getBytes("UTF-8"));
String base64 = new String(os.toByteArray(),"UTF-8");
gzip.close();
b64os.close();
System.out.print(base64)
} catch (Throwable t) {
t.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我需要得到H4sIAAAAAAAAAEtUKC4pysxLV8hPU0jOSCxKTC5JLSoGAOP+cfkWAAAA。为什么我得到这个输出?
H4sIAAAAAAAA
Run Code Online (Sandbox Code Playgroud)
你叫os.toByteArray()你关闭之前gzip和b64os-这意味着他们已经几乎肯定得到了缓冲的数据。(除此之外,base64 流必须等到它关闭才能写出任何填充。)
只需base64在close调用后移动to的声明/分配,我怀疑它会没事的。
| 归档时间: |
|
| 查看次数: |
1856 次 |
| 最近记录: |