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

Метод zip.Writer.CreateHeader

Метод zip.Writer.CreateHeader создает новый файл внутри ZIP-архива с заданным заголовком. В отличие от метода Create, этот метод позволяет полностью контролировать метаданные файла, такие как время модификации, режим доступа, метод сжатия и другие параметры. В качестве единственного параметра метод принимает указатель на структуру zip.FileHeader, которая содержит всю информацию о файле. Метод возвращает объект io.Writer, в который можно записывать содержимое файла.

Синтаксис

func (w *zip.Writer) CreateHeader(fh *zip.FileHeader) (io.Writer, error)

Пример

Давайте создадим ZIP-архив и добавим в него файл с настраиваемым заголовком, указав имя файла и время модификации:

package main import ( "archive/zip" "os" "time" ) func main() { file, err := os.Create("archive.zip") if err != nil { panic(err) } defer file.Close() zipWriter := zip.NewWriter(file) defer zipWriter.Close() header := &zip.FileHeader{ Name: "file.txt", Modified: time.Now(), } writer, err := zipWriter.CreateHeader(header) if err != nil { panic(err) } writer.Write([]byte("Hello, World!")) }

Пример

Давайте создадим ZIP-архив и добавим в него файл с указанием метода сжатия Deflate и установкой прав доступа только для чтения:

package main import ( "archive/zip" "os" "time" ) func main() { file, err := os.Create("secure.zip") if err != nil { panic(err) } defer file.Close() zipWriter := zip.NewWriter(file) defer zipWriter.Close() header := &zip.FileHeader{ Name: "data.txt", Method: zip.Deflate, Modified: time.Now(), } header.SetMode(0444) writer, err := zipWriter.CreateHeader(header) if err != nil { panic(err) } writer.Write([]byte("Secret data")) }

Пример

Давайте создадим ZIP-архив с несколькими файлами, используя разные заголовки для каждого из них:

package main import ( "archive/zip" "os" "time" ) func main() { file, err := os.Create("files.zip") if err != nil { panic(err) } defer file.Close() zipWriter := zip.NewWriter(file) defer zipWriter.Close() files := []struct { name string content string mode os.FileMode }{ {"readme.txt", "Readme content", 0644}, {"secret.log", "Log data", 0600}, {"public.log", "Public log", 0644}, } for _, f := range files { header := &zip.FileHeader{ Name: f.name, Method: zip.Deflate, Modified: time.Now(), } header.SetMode(f.mode) writer, err := zipWriter.CreateHeader(header) if err != nil { panic(err) } writer.Write([]byte(f.content)) } }

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

  • метод zip.Writer.Create,
    который создает файл в ZIP-архиве с автоматическим заполнением заголовка
  • метод zip.Writer.Close,
    который завершает запись ZIP-архива и закрывает его
  • структуру zip.FileHeader,
    которая содержит метаданные файла в ZIP-архиве
  • функцию zip.NewWriter,
    которая создает новый объект для записи ZIP-архива
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить