2013-12-13 145 views
0

我需要将字符串转换为gzip base64。我有此代码如何将字符串转换为带有ByteArrayOutputStream的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(); 
     } 
    } 
} 

我需要得到H4sIAAAAAAAAAEtUKC4pysxLV8hPU0jOSCxKTC5JLSoGAOP+cfkWAAAA。为什么我得到这个输出?

H4sIAAAAAAAA 

回答

4

你打电话os.toByteArray()你已经关闭gzipb64os之前 - 这意味着他们已经几乎肯定得到了缓冲的数据。 (除此之外,base64流必须等到它关闭才能写出任何填充。)

只需将base64的声明/作业移至close调用之后,并且我怀疑它会没问题。

相关问题