2011-05-13 50 views

回答

39

這裏有兩個正交的概念:

  • 將文本轉換爲二進制數,典型地通過一個OutputStreamWriter
  • 壓縮二進制數據,例如使用GZIPOutputStream

所以最終你會想:

  • 通過ByteArrayOutputStream
  • 總結創建OutputStream其寫入到任何你想要的結果(例如文件或內存中OutputStreamGZIPOutputStream
  • 包裹GZIPOutputStreamOutputStreamWriter使用適當的字符集(例如UTF-8)
  • 寫的文本OutputStreamWriter
  • 關閉編寫器,它將刷新並關閉其他所有內容。

例如:

FileOutputStream output = new FileOutputStream(fileName); 
try { 
    Writer writer = new OutputStreamWriter(new GZIPOutputStream(output), "UTF-8")); 
    try { 
    writer.write(text); 
    } finally { 
    writer.close(); 
    } 
} finally { 
    output.close(); 
} 

請注意,我關閉output即使我們無法創建作家,但我們仍然需要關閉writer,如果一切順利,這是爲了刷新一切,完成數據寫入。

+0

我正在嘗試使用ByteArrayOutputStream,但您的示例完美地工作。謝謝 – Luistar15

+0

@ user752679:我最初使用ByteArrayOutputStream寫出了一個示例,但由於您的問題表明您想將其寫入文件中,因此... –

2

查看GZIPOutputStream - 您應該可以像使用其他輸出流一樣將其用於寫入文件 - 它只會自動以gzip壓縮格式將其寫入。