Функция zip.NewWriter
Функция zip.NewWriter создает новый объект zip.Writer,
который используется для записи файлов в ZIP-архив.
В качестве единственного параметра она принимает io.Writer,
в который будут записываться сжатые данные. Функция возвращает
указатель на zip.Writer, который позволяет добавлять файлы
в архив с помощью методов Create или CreateHeader.
После завершения работы с архивом необходимо вызвать метод
Close для записи завершающей информации архива.
Синтаксис
zip.NewWriter(w io.Writer) *zip.Writer
Пример
Давайте создадим простой ZIP-архив с одним файлом:
package main
import (
"archive/zip"
"os"
)
func main() {
file, err := os.Create("archive.zip")
if err != nil {
panic(err)
}
defer file.Close()
writer := zip.NewWriter(file)
defer writer.Close()
f, err := writer.Create("file.txt")
if err != nil {
panic(err)
}
_, err = f.Write([]byte("Hello, world!"))
if err != nil {
panic(err)
}
}
Пример
Давайте создадим ZIP-архив с несколькими файлами в разных директориях:
package main
import (
"archive/zip"
"os"
)
func main() {
file, err := os.Create("archive.zip")
if err != nil {
panic(err)
}
defer file.Close()
writer := zip.NewWriter(file)
defer writer.Close()
files := []struct {
name string
data string
}{
{"dir1/file1.txt", "Content of file 1"},
{"dir2/file2.txt", "Content of file 2"},
{"dir2/subdir/file3.txt", "Content of file 3"},
}
for _, f := range files {
w, err := writer.Create(f.name)
if err != nil {
panic(err)
}
_, err = w.Write([]byte(f.data))
if err != nil {
panic(err)
}
}
}
Пример
Давайте создадим ZIP-архив с настройками заголовков файлов:
package main
import (
"archive/zip"
"os"
"time"
)
func main() {
file, err := os.Create("archive.zip")
if err != nil {
panic(err)
}
defer file.Close()
writer := zip.NewWriter(file)
defer writer.Close()
header := &zip.FileHeader{
Name: "file.txt",
Method: zip.Deflate,
Modified: time.Now(),
}
w, err := writer.CreateHeader(header)
if err != nil {
panic(err)
}
_, err = w.Write([]byte("Compressed data"))
if err != nil {
panic(err)
}
}
Смотрите также
-
функцию
zip.Writer.Create,
которая добавляет файл в ZIP-архив по имени -
функцию
zip.Writer.CreateHeader,
которая добавляет файл с указанным заголовком -
функцию
zip.Writer.Close,
которая завершает запись ZIP-архива -
функцию
zip.OpenReader,
которая открывает существующий ZIP-архив для чтения