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

Метод gzip.Writer.Close

Метод gzip.Writer.Close завершает процесс создания gzip-архива. Он записывает в выходной поток все оставшиеся данные, вычисляет и записывает контрольную сумму CRC32 и исходную длину данных. После вызова этого метода дальнейшая запись данных становится невозможной, а нижележащий io.Writer также закрывается, если он реализует интерфейс io.Closer. Метод возвращает ошибку, если в процессе записи закрывающего заголовка произошла ошибка.

Синтаксис

func (w *Writer) Close() error

Пример

Давайте создадим gzip-архив из строки и успешно его закроем:

package main import ( "bytes" "compress/gzip" "fmt" "io" ) func main() { var buf bytes.Buffer gz := gzip.NewWriter(&buf) _, err := gz.Write([]byte("hello world")) if err != nil { fmt.Println("write error:", err) return } err = gz.Close() if err != nil { fmt.Println("close error:", err) return } // Проверяем, что данные записаны и закрыты r, err := gzip.NewReader(&buf) if err != nil { fmt.Println("reader error:", err) return } defer r.Close() data, _ := io.ReadAll(r) fmt.Println(string(data)) }

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

"hello world"

Пример

Попробуем записать данные после вызова метода Close - это приведет к ошибке:

package main import ( "bytes" "compress/gzip" "fmt" ) func main() { var buf bytes.Buffer gz := gzip.NewWriter(&buf) gz.Write([]byte("hello")) // Закрываем архиватор err := gz.Close() if err != nil { fmt.Println("close error:", err) return } // Попытка записи после закрытия _, err = gz.Write([]byte(" world")) if err != nil { fmt.Println("write after close:", err) } }

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

"write after close: gzip: writer is closed"

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

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