Архиве спајају неколико датотека у један формат, обично зип, тар или рар. Архивске датотеке такође могу користити компресију да би смањиле укупну величину датотеке.
Можете користити архиве за дистрибуцију софтвера и података, укључујући веб странице. Такође можете да архивирате своју апликацију, са свим њеним датотекама и зависностима, како би корисници могли да преузму и инсталирају.
Го-ов архивски пакет вам омогућава да креирате и екстрахујете архиве у тар и зип форматима.
Го'с Арцхиве Пацкаге
Го пружа архива пакети за рад са разним архивским форматима. Можете користити зип и тар пакете за креирање, читање и писање архивских датотека у тим форматима. Оба пакета подржавају различите алгоритме компресије преко АПИ-ја који је једноставан за коришћење.
Ево како можете да увезете зип и тар пакете у своје Го датотеке:
увоз (
"архива/зип"
"архива/тар"
)
Након увоза пакета, можете их користити за креирање и манипулацију архивским датотекама.
Креирање и додавање датотека у Тар архиве
Тхе тар пакет ради са катраном архиве тар и тар.гз формата, укључујући подршку за читање и писање датотека са ПАКС проширеним заглављима.
Пакет тар обезбеђује а НевВритер функција за креирање нових тар архива. НевВритер узима у ио. Вритер инстанца интерфејса која може бити датотека или меморијски бафер и враћа показивач на тар. Вритер струцт.
пакет главни
увоз (
"архива/тар"
"ос"
)фунцглавни() {
// Креирајте нову датотеку
фајл, _ := ос. Креирај("миарцхиве.тар")
одложити фајл. Близу()
// Креирајте нову тар архиву
тарВритер := тар. НевВритер (фајл)
одложити тарВритер. Близу()
}
Тхе Креирај функција на ос пакет креира нову тар датотеку. Тхе тар. НевВритер функција преузима датотеку и креира нову архиву.
Можете додати датотеке у тар архиву помоћу ВритеХеадер и Пишите функције. Функција ВритеХеадер узима а тар. Хеадер структуру као аргумент. Ово садржи метаподатке датотеке, као што су име датотеке, величина и битови дозволе. Функција Врите уписује садржај датотеке у архиву.
увоз (
"архива/тар"
"фмт"
"ио"
"Пријава"
"ос"
)фунцглавни() {
// Креирајте нову датотеку
фајл, _ := ос. Креирај("миарцхиве.тар")
фајл, _ = ос. Креирај("мессаге.ткт")
одложити фајл. Близу()// Креирајте нову тар архиву
тарВритер := тар. НевВритер (фајл)
одложити тарВритер. Близу()
// Додајте датотеку у архиву
филеТоАдд, _ := ос. Отвори("филе1.ткт")
одложити филеТоАдд. Близу()
филеИнфо, _ := филеТоАдд. Стат()
заглавље, _ := тар. ФилеИнфоХеадер (филеИнфо, "")
тарВритер. ВритеХеадер (заглавље)
_, _ = ио. Копирај (тарВритер, филеТоАдд)
фмт. Принтлн(„Операција ТАР архиве је завршена“)
}
Програм креира нове тар и текстуалне датотеке са Креирај функција на ос пакет и нову тар архиву са НевВритер, пре додавања датотеке у архиву.
Тхе Отвори функција отвара датотеку за додавање у архиву. Имајте на уму да ће вам требати датотека под називом филе1.ткт у вашем радном директоријуму да бисте успешно покренули овај програм.
Можете користити Стат функција инстанце датотеке за преузимање метаподатака који су вам потребни за тар заглавље. Проследите његов резултат на ФилеИнфоХеадер, а затим проследите тај резултат у ВритеХеадер функцију за подешавање тар датотеке. На крају, копирајте датотеку у архиву користећи ио. Копирај.
Извлачење датотека из Тар архива
Можете користити НевРеадер функција за читање садржаја тар архивске датотеке. Функција НевРеадер преузима ан ио. Реадер интерфејс који може бити датотека или меморијски бафер. Враћа показивач на а тар. Реадер струцт.
увоз (
"архива/тар"
"ио"
"ос"
)фунцглавни() {
// Отворите тар архиву
фајл, _ := ос. Отвори("миарцхиве.тар")
одложити фајл. Близу()// Креирајте нови тар читач
тарРеадер := тар. НевРеадер (фајл)// Итерација преко датотека у архиви
за {
хеадер, ерр := тарРеадер. Следећи()ако ерр == ио. ЕОФ {
пауза
}
// Извуците датотеку
оутФиле, _ := ос. Креирајте (заглавље. име)
одложити оутФиле. Близу()
_, _ = ио. Копирај (оутФиле, тарРеадер)
}
}
Тхе бесконачна фор петља пролази кроз инстанцу читача тар и издваја датотеке копирањем сваке датотеке помоћу ио пакета Копирај функција.
Креирање и додавање датотека у Зип архиве
Можете креирати нову зип архиву са НевВритер функција на зип пакет. Функција НевВритер узима инстанцу датотеке и враћа зип писац.
увоз (
"архива/зип"
"ос"
)фунцглавни() {
// Креирајте нову датотеку
фајл, грешка := ос. Креирај("арцхиве.зип")ако ерр != нула {
паника(ерр)
}одложити фајл. Близу()
// Креирајте нови зип писац
зипВритер := зип. НевВритер (фајл)
одложити зипВритер. Близу()
}
Тхе зипВритер променљива складишти нову Вритер на пример да се НевВритер враћа.
Можете додати датотеке у своје зип архиве помоћу Креирај функција инстанце Вритер. Функција Креирај преузима име датотеке. Такође можете користити Пишите функција инстанце зип датотеке за писање података у датотеке у зип архивама.
увоз (
"архива/зип"
"ос"
)фунцглавни() {
// Креирајте нове датотеке
фајл, грешка := ос. Креирај("арцхиве.зип")
фајл, грешка = ос. Креирај("филе1.ткт")
фајл, грешка = ос. Креирај("филе2.ткт")ако ерр != нула {
паника(ерр)
}одложити фајл. Близу()
// Креирајте нови зип писац
зипВритер := зип. НевВритер (фајл)
одложити зипВритер. Близу()// Додајте датотеке у архиву
филе1, ерр := зипВритер. Креирај("филе1.ткт")ако ерр != нула {
паника(ерр)
}филе2, ерр := зипВритер. Креирај("филе2.ткт")
ако ерр != нула {
паника(ерр)
}
// Уписује податке у датотеке у архиви
филе1.Врите([]бајт("Здраво Свете!"))
филе2.Врите([]бајт("Збогом, Свете!"))
фмт. Принтлн("операција зип архивирања је завршена")
}
Главна функција почиње коришћењем Креирај да бисте креирали нову зип датотеку и две текстуалне датотеке. Затим креира два писача за додавање две текстуалне датотеке у архиву. Тхе Пишите функција сваке инстанце датотеке пише поруке свакој од датотека у архиви.
Извлачење датотека из Зип архиве
Можете издвојити постојећу зип датотеку тако што ћете је прочитати помоћу ОпенРеадер функцију, затим петља кроз њен садржај и копирање датотека помоћу ио пакет.
увоз (
"архива/зип"
"фмт"
"ио"
"ос"
)фунцглавни() {
// Отворите архиву
зипРеадер, ерр := зип. ОпенРеадер("арцхиве.зип")ако ерр != нула {
паника(ерр)
}одложити зипРеадер. Близу()
// Извуците датотеке из архиве
за _, фајл := домет зипРеадер. Фајл {
зиппедФиле, ерр := филе. Опен()ако ерр != нула {
паника(ерр)
}одложити зиппедФиле. Близу()
// Креирајте нову датотеку са истим именом као зипована датотека
ектрацтедФиле, ерр := ос. Креирајте (датотека. име)ако ерр != нула {
паника(ерр)
}одложити ектрацтедФиле. Близу()
// Копирај податке из зиповане датотеке у нову датотеку
_, грешка = ио. Копирај (ектрацтедФиле, зиппедФиле)ако ерр != нула {
паника(ерр)
}
фмт. Принтф(„Издвојено %с\н“, фајл. име)
}
}
Тхе ОпенРеадер функција чита зип архиве. Тхе ОпенРеадер функција прихвата име зип датотеке као аргумент и враћа инстанцу читача зип датотеке. Тхе фор-ранге петља пролази кроз садржај датотека у инстанци читача. Прави нову датотеку са истим именом као оригинална датотека и копира садржај екстраховане датотеке у нову датотеку користећи ио. Копирај функција.
Распакујте ручно или програмски - на вама је
Програмско распакивање датотека је згодно ако имате много датотека или архива за распакивање. Можда интегришете и функцију архивирања у своју главну апликацију.
У другим случајевима, можда ће вам бити боље да користите постојеће апликације. Можете да користите уграђене апликације или апликације трећих страна да распакујете архиве на Виндовс, мацОС и Линук.