Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

Архивы объединяют несколько файлов в единый формат, обычно это zip, tar или rar. Архивные файлы также могут использовать сжатие для уменьшения общего размера файла.

Вы можете использовать архивы для распространения программного обеспечения и данных, включая веб-страницы. Вы также можете заархивировать свое приложение со всеми его файлами и зависимостями, чтобы пользователи могли загрузить и установить его.

Архивный пакет Go позволяет создавать и распаковывать архивы в форматах tar и zip.

Архивный пакет Go

Go предоставляет архив пакеты для работы с различными форматами архивов. Вы можете использовать молния и смола пакеты для создания, чтения и записи архивных файлов в этих форматах. Оба пакета поддерживают различные алгоритмы сжатия через простой в использовании API.

Вот как вы можете импортировать пакеты zip и tar в свои файлы Go:

Импортировать (
"архив/zip"
"архив/тар"
)
instagram viewer

После импорта пакетов вы можете использовать их для создания архивных файлов и управления ими.

Создание и добавление файлов в архивы Tar

смола пакет работает с tar архивы форматов tar и tar.gz, включая поддержку чтения и записи файлов с расширенными заголовками PAX.

Пакет tar предоставляет НовыйПисатель функция для создания новых tar-архивов. NewWriter принимает ио. Писатель экземпляр интерфейса, который может быть файлом или буфером памяти и возвращает указатель на деготь. Писатель структура.

упаковка основной

Импортировать (
"архив/тар"
"Операционные системы"
)

функцияосновной() {
// Создаем новый файл
файл, _ := ос. Создавать("мойархив.tar")
откладывать файл. Закрывать()

// Создаем новый tar-архив
tarWriter := tar. NewWriter (файл)
откладывать tarWriter. Закрывать()
}

Создавать функция Операционные системы package создает новый файл tar. деготь. НовыйПисатель функция принимает файл и создает новый архив.

Вы можете добавлять файлы в tar-архив с помощью НаписатьЗаголовок и Писать функции. Функция WriteHeader принимает деготь. Заголовок структура в качестве аргумента. Он содержит метаданные файла, такие как имя файла, размер и биты разрешений. Функция Write записывает содержимое файла в архив.

Импортировать (
"архив/тар"
"ФМТ"
"ио"
"бревно"
"Операционные системы"
)

функцияосновной() {
// Создаем новый файл
файл, _ := ос. Создавать("мойархив.tar")
файл, _ = ОС. Создавать("сообщение.txt")
откладывать файл. Закрывать()

// Создаем новый tar-архив
tarWriter := tar. NewWriter (файл)
откладывать tarWriter. Закрывать()

// Добавляем файл в архив
fileToAdd, _ := os. Открыть("файл1.txt")
откладывать файл для добавления. Закрывать()
fileInfo, _ := fileToAdd. Стат()
заголовок, _ := tar. FileInfoHeader (информация о файле, "")
tarWriter. WriteHeader (заголовок)
_, _ = ио. Копировать (tarWriter, fileToAdd)
ФМТ. Распечатать("Операция архивирования TAR завершена")
}

Программа создает новые tar и текстовые файлы с расширением Создавать функция Операционные системы пакет и новый tar-архив с НовыйПисатель, прежде чем добавить файл в архив.

Открыть Функция открывает файл для добавления в архив. Обратите внимание, что вам понадобится файл с именем файл1.txt в вашем рабочем каталоге для успешного запуска этой программы.

Вы можете использовать Стат функция экземпляра файла для получения метаданных, которые вам понадобятся для заголовка tar. Передайте его результат FileInfoHeader, затем передайте этот результат НаписатьЗаголовок функция для настройки tar-файла. Наконец, скопируйте файл в архив, используя ио. Копировать.

Извлечение файлов из архивов Tar

Вы можете использовать НовыйЧитатель Функция для чтения содержимого файла архива tar. Функция NewReader принимает ио. Читатель интерфейс, который может быть файлом или буфером памяти. Он возвращает указатель на деготь. Читатель структура.

Импортировать (
"архив/тар"
"ио"
"Операционные системы"
)

функцияосновной() {
// Открываем tar-архив
файл, _ := ос. Открыть("мойархив.tar")
откладывать файл. Закрывать()

// Создаем новый tar-ридер
tarReader := tar. NewReader (файл)

// Перебираем файлы в архиве
для {
заголовок, ошибка := tarReader. Следующий()

если ошибка == ио. конец {
перерыв
}

// Извлекаем файл
outFile, _ := ос. Создать (заголовок. Имя)
откладывать выходной файл. Закрывать()
_, _ = ио. Копировать (outFile, tarReader)
}
}

бесконечный цикл проходит через экземпляр tar-ридера и извлекает файлы, копируя каждый файл с ио пакет Копировать функция.

Создание и добавление файлов в Zip-архивы

Вы можете создать новый zip-архив с НовыйПисатель функция молния упаковка. Функция NewWriter принимает экземпляр файла и возвращает средство записи zip.

Импортировать (
"архив/zip"
"Операционные системы"
)

функцияосновной() {
// Создаем новый файл
файл, ошибка := os. Создавать("архив.zip")

если ошибся != ноль {
паника(ошибка)
}

откладывать файл. Закрывать()

// Создаем новый zip-архиватор
zipWriter := zip. NewWriter (файл)
откладывать zipWriter. Закрывать()
}

zipWriter переменная хранит новый Писатель экземпляр, который NewWriter возвращает.

Вы можете добавлять файлы в свои zip-архивы с помощью Создавать функция экземпляра Writer. Функция Create принимает имя файла. Вы также можете использовать Писать функция экземпляра zip-файла для записи данных в файлы в zip-архивах.

Импортировать (
"архив/zip"
"Операционные системы"
)

функцияосновной() {
// Создаем новые файлы
файл, ошибка := os. Создавать("архив.zip")
файл, ошибка = ос. Создавать("файл1.txt")
файл, ошибка = ос. Создавать("файл2.txt")

если ошибся != ноль {
паника(ошибка)
}

откладывать файл. Закрывать()

// Создаем новый zip-архиватор
zipWriter := zip. NewWriter (файл)
откладывать zipWriter. Закрывать()

// Добавляем файлы в архив
файл1, ошибка := zipWriter. Создавать("файл1.txt")

если ошибся != ноль {
паника(ошибка)
}

файл2, ошибка := zipWriter. Создавать("файл2.txt")

если ошибся != ноль {
паника(ошибка)
}

// Записываем данные в файлы в архиве
файл1.Записать([]байт("Привет, мир!"))
файл2.Запись([]байт("Прощай мир!"))
ФМТ. Распечатать("операция zip-архивирования завершена")
}

Основная функция начинается с использования Создавать для создания нового zip-файла и двух текстовых файлов. Затем он создает два модуля записи для добавления двух текстовых файлов в архив. Писать Функция каждого экземпляра файла записывает сообщения в каждый из файлов в архиве.

Извлечение файлов из Zip-архивов

Вы можете извлечь существующий zip-файл, прочитав его с помощью OpenReader функцию, затем циклически просматривая ее содержимое и копируя файлы с ио упаковка.

Импортировать (
"архив/zip"
"ФМТ"
"ио"
"Операционные системы"
)

функцияосновной() {
// Открываем архив
zipReader, ошибка := zip. ОткрытьЧтение("архив.zip")

если ошибся != ноль {
паника(ошибка)
}

откладывать zipReader. Закрывать()

// Извлекаем файлы из архива
для _, файл := диапазон zipReader. Файл {
zipFile, ошибка := файл. Открыть()

если ошибся != ноль {
паника(ошибка)
}

откладывать заархивированный файл. Закрывать()

// Создаем новый файл с тем же именем, что и заархивированный файл
извлеченный файл, ошибка := os. Создать (файл. Имя)

если ошибся != ноль {
паника(ошибка)
}

откладывать извлеченный файл. Закрывать()

// Копируем данные из заархивированного файла в новый файл
_, ошибка = io. Копировать (распакованный файл, заархивированный файл)

если ошибся != ноль {
паника(ошибка)
}

ФМТ. Распечататьf("Извлечено %s\n", файл. Имя)
}
}

OpenReader функция читает zip архивы. OpenReader Функция принимает имя zip-файла в качестве аргумента и возвращает экземпляр программы чтения zip-файлов. для диапазона цикл проходит через содержимое файлов в экземпляре читателя. Он создает новый файл с тем же именем, что и исходный файл, и копирует содержимое извлеченного файла в новый файл, используя ио. Копировать функция.

Распаковать вручную или программно — решать вам

Распаковывать файлы программно удобно, если у вас есть много файлов или архивов для распаковки. Вы также можете интегрировать функции архивирования в свое основное приложение.

В других случаях вам может быть лучше использовать существующие приложения. Вы можете использовать встроенные или сторонние приложения для распаковки архивов в Windows, macOS и Linux.