Функция zip.OpenReader
Функция zip.OpenReader открывает ZIP-архив по указанному
пути и возвращает указатель на структуру ReadCloser,
которая позволяет читать содержимое архива. В первый параметр
функция принимает строку с путем к ZIP-файлу. Возвращаемое
значение содержит поле File - список файлов в архиве,
и методы для закрытия архива. Функция возвращает ошибку,
если не удалось открыть архив или он поврежден.
Синтаксис
zip.OpenReader(name)
Пример
Давайте откроем ZIP-архив и выведем список имен файлов внутри него:
package main
import (
"archive/zip"
"fmt"
"log"
)
func main() {
r, err := zip.OpenReader("archive.zip")
if err != nil {
log.Fatal(err)
}
defer r.Close()
for _, f := range r.File {
fmt.Println(f.Name)
}
}
Результат выполнения кода:
"file1.txt"
"file2.txt"
"folder/file3.txt"
Пример
Давайте прочитаем содержимое конкретного файла из ZIP-архива:
package main
import (
"archive/zip"
"fmt"
"io"
"log"
"strings"
)
func main() {
r, err := zip.OpenReader("archive.zip")
if err != nil {
log.Fatal(err)
}
defer r.Close()
for _, f := range r.File {
if strings.HasSuffix(f.Name, ".txt") {
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: %s\n", f.Name, string(data))
}
}
}
Результат выполнения кода:
"file1.txt: Hello World"
"file2.txt: Go programming"
Пример
Давайте обработаем ошибку при попытке открыть несуществующий ZIP-архив:
package main
import (
"archive/zip"
"fmt"
"log"
)
func main() {
r, err := zip.OpenReader("missing.zip")
if err != nil {
log.Printf("Failed to open archive: %v", err)
return
}
defer r.Close()
fmt.Println("Archive opened successfully")
}
Результат выполнения кода:
"Failed to open archive: open missing.zip: no such file or directory"
Смотрите также
-
функцию
zip.NewReader,
которая создает читатель ZIP-архива из байтового потока -
структуру
zip.File,
которая представляет отдельный файл внутри ZIP-архива -
метод
zip.File.Open,
который открывает файл для чтения из ZIP-архива -
функцию
zip.NewWriter,
которая создает писатель для создания ZIP-архива