Функция zlib.NewWriter
Функция zlib.NewWriter создает новый объект *zlib.Writer,
который сжимает данные в формате zlib и записывает их в переданный
io.Writer. В единственный параметр функция принимает
выходной поток (io.Writer), в который будут записываться
сжатые данные. Возвращаемое значение представляет собой указатель
на zlib.Writer, через который производится запись сжатых данных.
Синтаксис
zlib.NewWriter(w io.Writer) *zlib.Writer
Пример
Давайте сожмем строку "abcde" в формате zlib и запишем результат в буфер:
package main
import (
"bytes"
"compress/zlib"
"fmt"
)
func main() {
var buf bytes.Buffer
w := zlib.NewWriter(&buf)
_, err := w.Write([]byte("abcde"))
if err != nil {
fmt.Println("Error:", err)
return
}
err = w.Close()
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Printf("%x", buf.Bytes())
}
Результат выполнения кода:
"789c4b2c4e4c55484d2d2e06000408009b"
Пример
Давайте сожмем и сразу же распакуем данные, чтобы проверить корректность сжатия:
package main
import (
"bytes"
"compress/zlib"
"fmt"
"io"
)
func main() {
original := []byte("abcde")
var compressed bytes.Buffer
w := zlib.NewWriter(&compressed)
w.Write(original)
w.Close()
r, err := zlib.NewReader(&compressed)
if err != nil {
fmt.Println("Error:", err)
return
}
defer r.Close()
decompressed, err := io.ReadAll(r)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Printf("Original: %s, Decompressed: %s",
original, decompressed)
}
Результат выполнения кода:
"Original: abcde, Decompressed: abcde"
Пример
Давайте используем zlib.NewWriter для сжатия данных
с записью в файл:
package main
import (
"compress/zlib"
"fmt"
"os"
)
func main() {
file, err := os.Create("data.zlib")
if err != nil {
fmt.Println("Error:", err)
return
}
defer file.Close()
w := zlib.NewWriter(file)
defer w.Close()
_, err = w.Write([]byte("abcde"))
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println("Data compressed and written to data.zlib")
}
Результат выполнения кода:
"Data compressed and written to data.zlib"
Смотрите также
-
функцию
zlib.NewWriterLevel,
которая создает компрессор zlib с указанным уровнем сжатия -
функцию
zlib.NewReader,
которая создает Reader для распаковки данных в формате zlib -
функцию
gzip.NewWriter,
которая создает компрессор в формате gzip -
функцию
flate.NewWriter,
которая создает компрессор в формате DEFLATE