РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1308 of 1593 menu

Функция gzip.NewReader

Функция gzip.NewReader создает новый ридер для чтения данных, сжатых в формате gzip. В единственный параметр функция принимает интерфейс io.Reader, который представляет собой источник сжатых данных. Функция возвращает указатель на структуру gzip.Reader и ошибку, которая возникает при неудачном чтении заголовка gzip.

Синтаксис

gzip.NewReader(r io.Reader) (*gzip.Reader, error)

Пример

Давайте прочитаем сжатые gzip данные из файла:

package main import ( "compress/gzip" "fmt" "io" "os" ) func main() { file, err := os.Open("data.gz") if err != nil { fmt.Println("Error opening file:", err) return } defer file.Close() gzReader, err := gzip.NewReader(file) if err != nil { fmt.Println("Error creating gzip reader:", err) return } defer gzReader.Close() data, err := io.ReadAll(gzReader) if err != nil { fmt.Println("Error reading data:", err) return } fmt.Println(string(data)) }

Результат выполнения кода:

"Hello, World!"

Пример

Давайте прочитаем gzip данные из строки, используя strings.NewReader:

package main import ( "compress/gzip" "fmt" "io" "strings" ) func main() { // Gzip сжатые данные в виде строки gzipData := "\x1f\x8b\b\x00\x00\x00\x00\x00\x00\xff\xf2H\xcd\xc9\xc9W(\xcf/\xcaI\x01\x00\x00\x00\xff\xff\x01\x00\x00\xff\xff\xe1\x05\x00\x00" reader := strings.NewReader(gzipData) gzReader, err := gzip.NewReader(reader) if err != nil { fmt.Println("Error creating gzip reader:", err) return } defer gzReader.Close() data, err := io.ReadAll(gzReader) if err != nil { fmt.Println("Error reading data:", err) return } fmt.Println(string(data)) }

Результат выполнения кода:

"Hello World"

Пример

Давайте прочитаем сжатые данные из байтового буфера:

package main import ( "bytes" "compress/gzip" "fmt" "io" ) func main() { compressedData := []byte{ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf2, 0x48, 0xcd, 0xc9, 0xc9, 0x57, 0x28, 0xcf, 0x2f, 0xca, 0x49, 0x01, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xe1, 0x05, 0x00, 0x00, } buf := bytes.NewReader(compressedData) gzReader, err := gzip.NewReader(buf) if err != nil { fmt.Println("Error creating gzip reader:", err) return } defer gzReader.Close() data, err := io.ReadAll(gzReader) if err != nil { fmt.Println("Error reading data:", err) return } fmt.Println(string(data)) }

Результат выполнения кода:

"Hello"

Пример

Давайте обработаем ошибку при попытке чтения невалидных gzip данных:

package main import ( "compress/gzip" "fmt" "strings" ) func main() { invalidData := strings.NewReader("not a gzip file") gzReader, err := gzip.NewReader(invalidData) if err != nil { fmt.Println("Error:", err) return } defer gzReader.Close() }

Результат выполнения кода:

"Error: gzip: invalid header"

Смотрите также

  • функцию gzip.NewWriter,
    которая создает ридер для записи gzip-данных
  • функцию gzip.Reader,
    которая представляет структуру ридера gzip
  • функцию gzip.Reader.Close,
    которая закрывает ридер и освобождает ресурсы
  • функцию gzip.NewWriterLevel,
    которая создает ридер с указанным уровнем сжатия
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить