Функция flate.NewWriter
Функция flate.NewWriter создает новый объект, который сжимает данные с использованием алгоритма DEFLATE. В первый параметр мы передаем выходной поток, в который будут записываться сжатые данные. Второй параметр определяет уровень сжатия: flate.BestSpeed для максимальной скорости, flate.BestCompression для максимальной степени сжатия, или flate.DefaultCompression для сбалансированного режима. Возвращаемое значение - указатель на flate.Writer, который позволяет записывать данные для сжатия.
Синтаксис
flate.NewWriter(w io.Writer, level int) (*flate.Writer, error)
Пример
Давайте создадим компрессор со стандартным уровнем сжатия и запишем строку:
package main
import (
"bytes"
"compress/flate"
"fmt"
)
func main() {
var buf bytes.Buffer
writer, err := flate.NewWriter(&buf, flate.DefaultCompression)
if err != nil {
fmt.Println("Error:", err)
return
}
defer writer.Close()
writer.Write([]byte("abcde"))
writer.Close()
fmt.Println(buf.Bytes())
}
Результат выполнения кода:
[30 51 75 45 156 2 0 0 0 255 255]
Пример
Давайте используем максимальный уровень сжатия для того же набора данных:
package main
import (
"bytes"
"compress/flate"
"fmt"
)
func main() {
var buf bytes.Buffer
writer, err := flate.NewWriter(&buf, flate.BestCompression)
if err != nil {
fmt.Println("Error:", err)
return
}
defer writer.Close()
writer.Write([]byte("abcde"))
writer.Close()
fmt.Println(buf.Bytes())
}
Результат выполнения кода:
[30 51 75 45 156 2 0 0 0 255 255]
Пример
Давайте сожмем несколько строк с разными уровнями сжатия:
package main
import (
"bytes"
"compress/flate"
"fmt"
)
func main() {
data := []byte("12345")
var fastBuf bytes.Buffer
fastWriter, _ := flate.NewWriter(&fastBuf, flate.BestSpeed)
fastWriter.Write(data)
fastWriter.Close()
var bestBuf bytes.Buffer
bestWriter, _ := flate.NewWriter(&bestBuf, flate.BestCompression)
bestWriter.Write(data)
bestWriter.Close()
fmt.Printf("Fast: %d bytes, Best: %d bytes\n",
fastBuf.Len(), bestBuf.Len())
}
Результат выполнения кода:
"Fast: 17 bytes, Best: 17 bytes"
Смотрите также
-
функцию
flate.NewReader,
которая создает читатель для распаковки DEFLATE-данных -
функцию
flate.BestSpeed,
которая задает максимальную скорость сжатия -
функцию
flate.BestCompression,
которая задает максимальную степень сжатия -
функцию
flate.DefaultCompression,
которая задает стандартный уровень сжатия