Тип zip.File
Тип zip.File представляет отдельный файл внутри ZIP-архива.
Он содержит информацию о файле: его имя, размер, дату модификации,
сжатый размер и метод сжатия. Основной метод типа — Open,
который возвращает io.ReadCloser для чтения содержимого файла.
Для доступа к файлам архива используется поле FileHeader,
которое содержит метаданные файла.
Синтаксис
Поле FileHeader содержит информацию о файле.
Метод Open открывает файл для чтения.
type File struct {
FileHeader
// содержит другие скрытые поля
}
func (f *File) Open() (io.ReadCloser, error)
Пример
Давайте прочитаем содержимое файла из ZIP-архива и выведем его в консоль:
package main
import (
"archive/zip"
"fmt"
"io"
"log"
"os"
)
func main() {
// Открываем ZIP-архив для чтения
r, err := zip.OpenReader("archive.zip")
if err != nil {
log.Fatal(err)
}
defer r.Close()
// Перебираем все файлы в архиве
for _, f := range r.File {
// Открываем файл для чтения
rc, err := f.Open()
if err != nil {
log.Fatal(err)
}
defer rc.Close()
// Читаем содержимое файла
data, err := io.ReadAll(rc)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Файл: %s, размер: %d байт\n", f.Name, len(data))
}
}
Результат выполнения кода:
"Файл: file1.txt, размер: 12 байт"
"Файл: file2.txt, размер: 24 байт"
Пример
Давайте получим информацию о файлах в архиве и выведем их метаданные:
package main
import (
"archive/zip"
"fmt"
"log"
)
func main() {
// Открываем ZIP-архив для чтения
r, err := zip.OpenReader("archive.zip")
if err != nil {
log.Fatal(err)
}
defer r.Close()
// Выводим информацию о каждом файле
for _, f := range r.File {
fmt.Printf("Имя: %s\n", f.Name)
fmt.Printf("Размер: %d байт\n", f.UncompressedSize64)
fmt.Printf("Сжатый размер: %d байт\n", f.CompressedSize64)
fmt.Printf("Метод сжатия: %s\n", f.Method)
fmt.Println("---")
}
}
Результат выполнения кода:
"Имя: document.txt"
"Размер: 1024 байт"
"Сжатый размер: 512 байт"
"Метод сжатия: 8"
"---"
"Имя: image.png"
"Размер: 2048 байт"
"Сжатый размер: 2048 байт"
"Метод сжатия: 0"
"---"
Смотрите также
-
тип
zip.Reader,
который предоставляет доступ к файлам ZIP-архива -
тип
zip.Writer,
который используется для создания ZIP-архивов -
функцию
zip.OpenReader,
которая открывает ZIP-архив для чтения -
тип
zip.FileHeader,
который содержит метаданные файла в архиве