Tôi muốn sử dụng để đọc một đoạn từ file
, coi nó là string
và gzip
đoạn này. Tôi biết cách đọc từ số file
và coi nó là string
, nhưng khi nói đến "compress/gzip"
Tôi bị mất. Tôi có nên tạo một io.writer
, ghi vào buf
(lát byte), sử dụng gzip.Writer(io.writer)
để lấy con trỏ của nhà văn đến io.writer
.. và sau đó sử dụng gzip.Write(chunk_of_file)
để viết chunk_of_file
đến buf
? sau đó tôi sẽ cần xử lý chuỗi dưới dạng một lát byte ..làm cách nào tôi có thể sử dụng gzip trên một chuỗi trong golang?
Trả lời
Bạn chỉ có thể viết bằng cách sử dụng gzip.Writer
khi nó triển khai io.Writer
.
Ví dụ:
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)
}
Nếu bạn muốn thiết lập mức độ nén (mặc định là "-1" from compress/flate
), bạn có thể sử dụng gzip.NewWriterLevel
.
Tôi cảm thấy cần lưu ý rằng Writer sẽ không thực sự ghi các byte đã nén vào bộ đệm cho đến khi 'gz.Flush()' được gọi. Tuôn ra cũng được gọi với 'gz.Close()', nhưng ví dụ sân chơi không bao giờ đạt được điều đó. – Nenoco
@Nenoco Bạn nói đúng. Tôi đã thêm câu lệnh 'Flush'. – Intermernet
Một điều nữa là Flush() chỉ ghi dữ liệu _current_ vào bộ đệm. Nó không hoàn thành toàn bộ định dạng GZIP. Vì vậy, trong trường hợp này, nó khá vô dụng, vì những gì được viết trên dòng cuối cùng không phải là một cấu trúc GZIP hợp lệ. Bạn cần phải gọi Close() _before_ bạn làm bất cứ điều gì với bộ đệm. –
- 1. Tôi làm cách nào để sử dụng gói "nén/gzip" của golang để gzip một tệp?
- 2. Làm cách nào để gzip nén một chuỗi trong Perl
- 3. Tôi có thể sử dụng gulp để thay thế một chuỗi trong một tệp bằng cách nào?
- 4. Làm cách nào để gzip nén một chuỗi bằng Python?
- 5. Golang: Làm thế nào để sử dụng syscall.Syscall trên Linux?
- 6. Làm thế nào tôi có thể lưu trữ một chuỗi trong một cột varbinary (max) bằng cách sử dụng C#
- 7. Với Mẫu Golang làm cách nào tôi có thể đặt biến trong mỗi mẫu?
- 8. Làm cách nào để tôi có thể sử dụng Giphy?
- 9. Làm cách nào để hợp nhất nhiều chuỗi và int vào một chuỗi đơn trong golang?
- 10. Làm thế nào tôi có thể chia chuỗi chỉ một lần sử dụng C#
- 11. Làm thế nào tôi có thể gọi một hàm Delphi trả về một chuỗi bằng cách sử dụng JNA?
- 12. Làm thế nào tôi có thể thay thế một chuỗi trong dấu ngoặc đơn bằng cách sử dụng regex?
- 13. Làm thế nào để có được một băm MD5 từ một chuỗi trong Golang?
- 14. Tôi làm cách nào để có thể sử dụng lại AlertDialog cho Có/Không trên Android?
- 15. Sử dụng git, làm cách nào tôi có thể tìm kiếm chuỗi trên tất cả các nhánh?
- 16. Làm thế nào tôi có thể băm một chuỗi vào một int bằng cách sử dụng c + +?
- 17. Làm cách nào để tôi có thể sử dụng lại HTML/JSP trong một trang?
- 18. Làm thế nào tôi có thể đọc một chuỗi ký tự có dấu cách trong C?
- 19. Làm cách nào để tôi có thể sử dụng tài nguyên tĩnh cho StringFormat trên một TextBlock?
- 20. Làm thế nào tôi có thể tạo một nhánh trong svn bằng cách sử dụng SharpSVN
- 21. Làm cách nào để sử dụng ngOptions với một chuỗi có chứa các thực thể HTML?
- 22. Trong Perl, làm cách nào tôi có thể biết chuỗi là một số?
- 23. Làm thế nào để giải nén chuỗi Gzip trong ruby?
- 24. Làm cách nào để thiết lập smtp trên Vista để tôi có thể sử dụng System.Net.Mail?
- 25. Làm thế nào tôi có thể gọi hệ thống của Linux/UNIX trong golang
- 26. Trong Perl, làm thế nào tôi có thể gọi một phương thức có tên tôi có trong một chuỗi?
- 27. Khi nào tôi nên sử dụng đồng thời ở golang?
- 28. là có cách nào tôi có thể sử dụng ứng dụng Loader trên cửa sổ?
- 29. Tôi làm cách nào để có thể phục vụ ứng dụng Ionic trên một cổng khác?
- 30. Làm cách nào để tôi có thể sử dụng lại các khóa dịch i18n trong Angular?
bản sao có thể có của [Làm cách nào tôi có thể sử dụng gói "nén/gzip" của golang để gzip một tệp?] (Http://stackoverflow.com/questions/16890648/how-can-i-use-golangs-compress-gzip -package-to-gzip-a-file) –
Tôi đang bối rối bởi câu hỏi của bạn, trong Go a string * là * a [] byte vì vậy nếu bạn muốn nó là một, chỉ cần chuyển đổi nó như vậy [] byte (mystringvar) – mzimmerman