Voglio utilizzare andare a leggere un pezzo da un file
, trattarlo come un string
e gzip
questo pezzo. Io so come leggere dal file
e trattarlo come un string
, ma quando si tratta di "compress/gzip"
sono perduto. Devo creare un io.writer
, che scrivere ad un (fetta byte) buf
, utilizzare il gzip.Writer(io.writer)
per ottenere un puntatore scrittore alla io.writer
..e quindi utilizzare gzip.Write(chunk_of_file)
a scrivere il chunk_of_file
a buf
? quindi avrei bisogno di trattare la stringa come una fetta di byte ..come posso usare gzip su una stringa in golang?
risposta
È possibile scrivere utilizzando gzip.Writer
come implementa io.Writer
.
Esempio:
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)
}
Se si desidera impostare il livello di compressione (di default è "-1" from compress/flate
) è possibile utilizzare gzip.NewWriterLevel
.
mi sento come si deve notare che lo scrittore non sarà effettivamente scrivere i byte compressi al buffer fino 'gz.Flush()' viene chiamato. Il flush viene anche chiamato con 'gz.Close()', ma l'esempio del campo da giuoco non arriva mai così lontano. – Nenoco
@Nenoco Hai ragione. Ho aggiunto la dichiarazione "Flush". – Intermernet
Un'altra cosa è che Flush() scrive solo i dati _current_ al buffer. Non finisce l'intero formato GZIP. Quindi, in questo caso, è abbastanza inutile, dal momento che ciò che è scritto sull'ultima riga non è una struttura GZIP valida. Devi chiamare Close() _before_ fai qualsiasi cosa con il buffer. –
- 1. Golang: Come usare syscall.Syscall su Linux?
- 2. Come decodificare/gonfiare una stringa gzip Chunked?
- 3. Compress una stringa a gzip in Java
- 4. Posso usare un file gzip aperto con Popen in Python?
- 5. Decomprime stringa GZip in Java
- 6. Posso usare una virgoletta singola in una "stringa" di PowerShell?
- 7. Posso usare una stringa vuota come identificatore di oggetto?
- 8. Come posso usare gulp per sostituire una stringa in un file?
- 9. Come posso usare php per analizzare una stringa di date?
- 10. Come ottenere un hash MD5 da una stringa in Golang?
- 11. Come dividere una stringa e assegnarla alle variabili in Golang?
- 12. quando usare il dirottamento in golang?
- 13. Puoi usare gzip su SSL? E connessione: intestazioni Keep-Alive
- 14. Posso usare MarshalJSON per aggiungere campi arbitrari a una codifica json in golang?
- 15. Golang Converti stringa in io.Writer?
- 16. Come decomprimere la stringa Gzip nel rubino?
- 17. Come posso tagliare una stringa in C?
- 18. Come abilitare gzip su Dreamhost?
- 19. Come posso scorrere su una stringa da rune in Go?
- 20. Come posso rimuovere "\ r \ n" da una stringa in C#? Posso usare un regEx?
- 21. java: salvare stringa come file di gzip
- 22. Analizza stringa nella mappa Golang
- 23. Come posso usare fprintf e scrivere su una pipe?
- 24. Quando dovrei usare simultaneamente in golang?
- 25. Golang: problemi in sostituzione di una nuova stringa in una stringa da un file di testo
- 26. Come posso usare Clojure's distinto? funzione su una collezione?
- 27. Posso usare regex in una query DynamoDB?
- 28. Come posso convertire un int in una stringa in C++ 11 senza usare to_string o stoi?
- 29. Come posso racchiudere una stringa in Perl?
- 30. Impossibile assegnare una stringa con virgoletta singola in golang
possibile duplicato di [Come utilizzare il pacchetto "compress/gzip" di golang per gzipare un file?] (Http://stackoverflow.com/questions/16890648/how-can-i-use-golangs-compress-gzip -package-to-gzip-a-file) –
sono confuso dalla tua domanda, in Go una stringa * è * un byte [] quindi se si vuole che sia uno, basta convertirlo come tale [] byte (mystringvar) – mzimmerman