Функция gzip.NewWriterLevel
Функция gzip.NewWriterLevel создает новый
gzip.Writer, который сжимает данные в формат
GZIP. В первый параметр передается объект,
реализующий интерфейс io.Writer, куда будет
записан сжатый вывод, во второй параметр передается
уровень сжатия, который может быть одним из
предопределенных значений: gzip.BestCompression,
gzip.BestSpeed, gzip.DefaultCompression
или gzip.NoCompression. Функция возвращает
указатель на gzip.Writer и ошибку, если уровень
сжатия недопустим.
Синтаксис
func gzip.NewWriterLevel(w io.Writer, level int) (*gzip.Writer, error)
Пример с уровнем BestSpeed
Давайте создадим GZIP-компрессор с уровнем сжатия
BestSpeed и сожмем строку:
package main
import (
"bytes"
"compress/gzip"
"fmt"
)
func main() {
var buf bytes.Buffer
w, err := gzip.NewWriterLevel(&buf, gzip.BestSpeed)
if err != nil {
fmt.Println("Error:", err)
return
}
defer w.Close()
data := []byte("Hello, World! This is a test string for compression.")
_, err = w.Write(data)
if err != nil {
fmt.Println("Error writing:", err)
return
}
err = w.Close()
if err != nil {
fmt.Println("Error closing:", err)
return
}
fmt.Printf("Compressed data size: %d bytes", buf.Len())
}
Результат выполнения кода:
"Compressed data size: 89 bytes"
Пример с уровнем BestCompression
Давайте создадим GZIP-компрессор с максимальным уровнем
сжатия BestCompression для сжатия данных:
package main
import (
"bytes"
"compress/gzip"
"fmt"
)
func main() {
var buf bytes.Buffer
w, err := gzip.NewWriterLevel(&buf, gzip.BestCompression)
if err != nil {
fmt.Println("Error:", err)
return
}
defer w.Close()
data := []byte("Hello, World! This is a test string for compression.")
_, err = w.Write(data)
if err != nil {
fmt.Println("Error writing:", err)
return
}
err = w.Close()
if err != nil {
fmt.Println("Error closing:", err)
return
}
fmt.Printf("Compressed data size: %d bytes", buf.Len())
}
Результат выполнения кода:
"Compressed data size: 83 bytes"
Пример с обработкой ошибки
Давайте попробуем создать компрессор с недопустимым уровнем сжатия и обработаем ошибку:
package main
import (
"bytes"
"compress/gzip"
"fmt"
)
func main() {
var buf bytes.Buffer
w, err := gzip.NewWriterLevel(&buf, 99)
if err != nil {
fmt.Println("Error:", err)
return
}
defer w.Close()
fmt.Println("Writer created successfully")
}
Результат выполнения кода:
"Error: gzip: invalid compression level: 99"
Смотрите также
-
функцию
gzip.NewWriter,
которая создает GZIP-компрессор с уровнем по умолчанию -
функцию
gzip.NewReader,
которая создает GZIP-распаковщик для чтения данных -
константу
gzip.BestCompression,
которая задает максимальный уровень сжатия -
константу
gzip.BestSpeed,
которая задает минимальный уровень сжатия