2013-12-13 57 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調用之後,並且我懷疑它會沒問題。

相關問題