Функция zlib.NewReader
Функция zlib.NewReader создает новый io.ReadCloser,
который позволяет читать распакованные данные из входного потока
в формате zlib. В качестве параметра функция принимает
io.Reader, содержащий сжатые данные, и возвращает
объект для чтения распакованных данных, а также ошибку,
если заголовок zlib некорректен.
Синтаксис
zlib.NewReader(r io.Reader) (io.ReadCloser, error)
Пример
Давайте распакуем данные из сжатого буфера:
package main
import (
"bytes"
"compress/zlib"
"fmt"
"io"
)
func main() {
// Сжимаем данные для примера
var compressed bytes.Buffer
writer := zlib.NewWriter(&compressed)
writer.Write([]byte("abcde"))
writer.Close()
// Распаковываем данные
reader, err := zlib.NewReader(&compressed)
if err != nil {
fmt.Println("Error:", err)
return
}
defer reader.Close()
res, err := io.ReadAll(reader)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(res))
}
Результат выполнения кода:
"abcde"
Пример
Давайте обработаем ошибку при создании reader с некорректными данными:
package main
import (
"bytes"
"compress/zlib"
"fmt"
)
func main() {
// Некорректные zlib данные
invalidData := bytes.NewReader([]byte("invalid zlib data"))
reader, err := zlib.NewReader(invalidData)
if err != nil {
fmt.Println(err)
return
}
defer reader.Close()
}
Результат выполнения кода:
"zlib: invalid header"
Смотрите также
-
функцию
zlib.NewWriter,
которая создает объект для сжатия данных в формате zlib -
функцию
gzip.NewReader,
которая создает объект для распаковки данных в формате gzip -
функцию
flate.NewReader,
которая создает объект для распаковки данных в формате DEFLATE -
функцию
zlib.NewWriterLevel,
которая создает объект для сжатия данных с указанным уровнем сжатия