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

Метод zip.Writer.Create

Метод zip.Writer.Create создает новый файл внутри ZIP-архива. В качестве единственного параметра он принимает имя файла (строку), которое будет использоваться в архиве. Метод возвращает интерфейс io.Writer, в который можно записывать содержимое создаваемого файла. После записи данных необходимо вызвать метод Close у самого zip.Writer для завершения формирования архива.

Синтаксис

func (w *zip.Writer) Create(name string) (io.Writer, error)

Метод принимает имя файла и возвращает интерфейс для записи данных. В случае ошибки (например, если архив уже закрыт) возвращается ошибка.

Пример

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

package main import ( "archive/zip" "bytes" "fmt" ) func main() { buf := new(bytes.Buffer) zipWriter := zip.NewWriter(buf) fileWriter, err := zipWriter.Create("file.txt") if err != nil { fmt.Println("Error creating file:", err) return } _, err = fileWriter.Write([]byte("Hello, World!")) if err != nil { fmt.Println("Error writing to file:", err) return } err = zipWriter.Close() if err != nil { fmt.Println("Error closing archive:", err) return } fmt.Printf("Archive size: %d bytes", buf.Len()) }

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

"Archive size: 152 bytes"

Пример

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

package main import ( "archive/zip" "bytes" "fmt" ) func main() { buf := new(bytes.Buffer) zipWriter := zip.NewWriter(buf) files := []struct { name string data []byte }{ {"dir1/file1.txt", []byte("Content of file 1")}, {"dir1/file2.txt", []byte("Content of file 2")}, {"file3.txt", []byte("Content of file 3")}, } for _, f := range files { fileWriter, err := zipWriter.Create(f.name) if err != nil { fmt.Println("Error creating file:", err) return } _, err = fileWriter.Write(f.data) if err != nil { fmt.Println("Error writing to file:", err) return } } err := zipWriter.Close() if err != nil { fmt.Println("Error closing archive:", err) return } fmt.Printf("Archive created with %d files", len(files)) }

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

"Archive created with 3 files"

Пример

Обработаем ошибку, возникающую при попытке создать файл в уже закрытом архиве:

package main import ( "archive/zip" "bytes" "fmt" ) func main() { buf := new(bytes.Buffer) zipWriter := zip.NewWriter(buf) // Закрываем архив до создания файла err := zipWriter.Close() if err != nil { fmt.Println("Error closing archive:", err) return } _, err = zipWriter.Create("file.txt") if err != nil { fmt.Println("Error:", err) } }

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

"Error: zip: writer closed"

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

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