我想用go從file
中讀出一個塊,將其視爲string
和gzip
這個塊。我知道如何從file
中讀取並將其當作string
,但是當涉及到"compress/gzip"
時,我迷了路。我應該創建一個寫入buf
(字節片段)的io.writer
,使用gzip.Writer(io.writer)
獲取指向io.writer
的寫入器指針,然後使用gzip.Write(chunk_of_file)
將chunk_of_file
寫入buf
?那麼我需要將字符串視爲一個字節切片。如何在golang中的字符串上使用gzip?
回答
您可以使用gzip.Writer
來編寫,因爲它實現了io.Writer
。
例子:
package main
import (
"bytes"
"compress/gzip"
"fmt"
)
func main() {
var b bytes.Buffer
gz := gzip.NewWriter(&b)
if _, err := gz.Write([]byte("YourDataHere")); err != nil {
panic(err)
}
if err := gz.Flush(); err != nil {
panic(err)
}
if err := gz.Close(); err != nil {
panic(err)
}
fmt.Println(b)
}
如果你想設置的壓縮級別(默認爲"-1" from compress/flate
),可以使用gzip.NewWriterLevel
。
我覺得應該指出Writer實際上不會將壓縮字節寫入緩衝區,直到調用gz.Flush()。 flush也是用'gz.Close()'調用的,但是這個操場例子從來沒有那麼遠。 – Nenoco
@Nenoco你是對的。我已經添加了'Flush'語句。 – Intermernet
還有一件事是Flush()只將_current_數據寫入緩衝區。它沒有完成整個GZIP格式。所以,在這種情況下,這是非常沒用的,因爲寫在最後一行的內容不是有效的GZIP結構。你需要調用Close()_before_你對緩衝區做任何事情。 –
- 1. 如何使用字符串在java中創建Gzip存檔?
- 2. 如何比較golang中的字符串?
- 3. 如何比較GoLang中的字符串?
- 4. 如何使用golang的「compress/gzip」軟件包來gzip文件?
- 5. 如何更換所有字符串中的字符在golang
- 6. 在golang字符串中計數字符
- 7. 如何在golang網頁中gzip模板
- 8. 如何替換Golang中的字符串中的單個字符?
- 9. GZipStream gzip字符串
- 10. gzip字符串,然後gzip的base64值
- 11. 使用GZip壓縮字符串,字符串不會更短
- 12. 字符串數組中golang
- 13. 我如何在MemoryStream中找到Gzip字符串的開頭?
- 14. 如何在Dart中使用GZip或類似的方法壓縮字符串?
- 15. 如何在Python中的字符串中使用子字符串?
- 16. 我如何使用GZip解壓字符串?
- 17. 如何修整「[」從Golang串字符
- 18. Lua:如何在內存中gzip一個字符串(gzip,而不是zlib)?
- 19. Golang:如何從字符串中替換第n個字符
- 20. 解壓縮用gzip ziped的字符串
- 21. 替換gzip文件中的字符串
- 22. 解壓縮GZIP字符串中的Java
- 23. 如何在golang模板中檢查字符串的空值
- 24. 如何讀取utf16文本文件在golang中的字符串?
- 25. 如何在golang中修剪字符串的前後空格?
- 26. Golang在字符串片段中追加字符串
- 27. 在Golang中提取部分字符串?
- 28. 在golang中寫入兩個字符串
- 29. 壓縮gzip字符串
- 30. 如何在jQuery中使用alpha字符串的子字符串?
可能的重複[如何使用golang的「compress/gzip」軟件包來gzip文件?](http://stackoverflow.com/questions/16890648/how-can-i-use-golangs-compress-gzip -package-to-gzip-a-file) –
我很困惑你的問題,在一個字符串*是* a []字節,所以如果你想它是一個,只要將它轉換爲[]字節(mystringvar ) – mzimmerman