comment puis-je utiliser gzip sur une chaîne en golang?
Que je veux utiliser pour aller lire un morceau à partir d'un file
, le traiter comme un string
et gzip
ce morceau. Je sais comment lire de la file
et la traiter comme une string
, mais quand il s'agit de "compress/gzip"
je suis perdu. Dois-je créer un io.writer
, qui écrivent à un buf
(octet de tranche), utilisez la gzip.Writer(io.writer)
à un écrivain pointeur de la io.writer
..et ensuite utiliser gzip.Write(chunk_of_file)
pour écrire le chunk_of_file
à buf
? alors j'aurais besoin de traiter la chaîne comme un octet tranche..
double possible de Comment puis-je utiliser golang "compresser/gzip" paquet de comprimer un fichier?
Je suis confus par votre question, de Passer une chaîne de caractères est [] byte donc, si vous le souhaitez, il suffit de le convertir en tant que telle []byte(mystringvar)
Je suis confus par votre question, de Passer une chaîne de caractères est [] byte donc, si vous le souhaitez, il suffit de le convertir en tant que telle []byte(mystringvar)
OriginalL'auteur stian | 2013-10-05
Vous devez vous connecter pour publier un commentaire.
Il vous suffit d'écrire à l'aide de
gzip.L'écrivain
la mise en oeuvre deio.Writer
.Exemple:
Aire de jeux
Si vous souhaitez régler le niveau de compression (la valeur par Défaut est "-1" à partir de
compresser/flate
), vous pouvez utilisergzip.NewWriterLevel
.gz.Flush()
est appelé. La couleur est également appelé avecgz.Close()
, mais l'aire de jeux exemple n'est jamais loin.Vous avez raison. J'ai ajouté le
Flush
déclaration.Une autre chose est que la méthode Flush() écrit le données de la mémoire tampon. Il ne veut pas finir l'ensemble GZIP format. Donc, dans ce cas, il est assez inutile, puisque ce qui est écrit sur la dernière ligne n'est pas valide GZIP structure. Vous devez appeler Close() avant - vous faire quelque chose avec le tampon.
Merci pour la correction. J'ai changé le code d'exemple pour fermer l'écrivain avant d'imprimer le contenu de la mémoire tampon.
Excellente astuce @PhilKulak. Juste pour ajouter un peu, à l'aide de reporter pour fermer la compression de l'Écrivain peut conduire à des bogues subtils où le tampon est utilisé avant d'être fermé. Cela peut entraîner des résultats inattendus EOF erreurs lors de la lecture des données compressées. Attention!
OriginalL'auteur Intermernet