Ich möchte verwenden, um ein Stück aus einem file
zu lesen, behandeln Sie es als string
und gzip
dieses Stück. Ich weiß, wie man von der file
liest und es als string
behandelt, aber wenn es zu "compress/gzip"
kommt, bin ich verloren. Sollte ich eine io.writer
erstellen, die in eine buf
(Byte-Slice) schreiben, verwenden Sie die gzip.Writer(io.writer)
, um einen Schreibzeiger auf die io.writer
.. und dann gzip.Write(chunk_of_file)
zu schreiben, die chunk_of_file
zu buf
? dann müsste ich die Zeichenfolge als ein Byte-Slice behandeln.wie kann ich gzip auf einer string in golang verwenden?
Antwort
Sie können einfach mit gzip.Writer
schreiben, wie es io.Writer
implementiert.
Beispiel:
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)
}
Wenn Sie die Komprimierungsstufe einstellen möchten (Standardeinstellung ist "-1" from compress/flate
) Sie gzip.NewWriterLevel
verwenden können.
Ich denke, es sollte beachtet werden, dass der Writer die komprimierten Bytes nicht wirklich in den Puffer schreiben wird, bis 'gz.Flush()' aufgerufen wird. Der Flush wird auch mit 'gz.Close()' aufgerufen, aber das Spielfeld-Beispiel kommt nie so weit. – Nenoco
@Nenoco Du hast Recht. Ich habe die 'Flush'-Anweisung hinzugefügt. – Intermernet
Eine weitere Sache ist, dass Flush() nur die _current_ Daten in den Puffer schreibt. Es schließt nicht das ganze GZIP-Format ab. In diesem Fall ist es ziemlich nutzlos, da das, was in der letzten Zeile geschrieben ist, keine gültige GZIP-Struktur ist. Sie müssen Close() aufrufen _before_ Sie alles mit dem Puffer tun. –
- 1. Golang un-gzip von Bytes.Reader
- 2. Wie Gzip Antwort für Golang Gin-Framework
- 3. Wie kann ich Strings in GoLang vergleichen?
- 4. Python codiert, gzip String
- 5. Wie aktiviere ich gzip auf Dreamhost?
- 6. Golang Vorlage: Verwenden Sie Rohr in Groß String
- 7. Wie lese ich in einer großen flachen Datei in Golang
- 8. Zeiger Golang von String
- 9. Wie kann ich string ohne #include <string> verwenden?
- 10. Golang: Zeit in String konvertieren
- 11. Kann ich Variablen für Zeitberechnungen in Golang nicht verwenden?
- 12. Wie kann ich alle mit Argument in Golang Regex ersetzen?
- 13. Wann sollte ich Parallelität in Golang verwenden?
- 14. Wie kann ich die Kompilierzeitkonstante __LINE__ in einem String verwenden?
- 15. Kann ich HTTP-Anfragen mit GZIP komprimieren?
- 16. Wie programmiere ich gzip in Jetty?
- 17. Wie kann ich Teilstring-String-Funktion in MVEL-Ausdrücke verwenden
- 18. Wie kann ich GZip mit SetEnvIfNoCase in Apache .htaccess deaktivieren?
- 19. Wie kann ich sbt.IO verwenden?
- 20. Wie kann ich gzip Datei mit PHP extrahieren oder dekomprimieren?
- 21. Golang Convert String zu io.Writer?
- 22. Wie kann ich eine Lücke * in Golang implementieren?
- 23. golang Wie kann man doppelte Anführungszeichen richtig verwenden?
- 24. Wie kann ich XML-Dateien in xfdl (base64-gzip) codieren?
- 25. Wie kann ich eine gzip-Datei in Javascript dekomprimieren?
- 26. Golang: String Datum Datum
- 27. Wie kann ich über ein JSON-Array in Golang iterieren?
- 28. Was ist der Unterschied zwischen [] String und ... String in Golang?
- 29. Wie kann ich WifiManager in einer Nicht-Aktivitätsklasse verwenden?
- 30. Wie kann ich benutzerdefinierte Schriftarten auf einer Website verwenden?
möglich Duplikat von [Wie kann ich das "compress/gzip" -Paket von golang verwenden, um eine Datei zu gzipen?] (Http://stackoverflow.com/questions/16890648/how-can-i-use-golangs-compress-gzip -package-to-gzip-a-file) –
Ich bin verwirrt durch Ihre Frage, in Go eine Zeichenfolge * ist * ein [] Byte, also wenn Sie wollen, dass es eins zu sein, konvertieren Sie es als solche [] Byte (mystringvar) – mzimmerman