Archívy spájajú niekoľko súborov do jedného formátu, zvyčajne zip, tar alebo rar. Archívne súbory môžu tiež použiť kompresiu na zníženie celkovej veľkosti súboru.
Archívy môžete použiť na distribúciu softvéru a údajov vrátane webových stránok. Môžete tiež archivovať svoju aplikáciu so všetkými jej súbormi a závislosťami, aby si ju používatelia mohli stiahnuť a nainštalovať.
Archívny balík Go vám umožňuje vytvárať a extrahovať archívy vo formátoch tar a zip.
Archívny balík Go
Go poskytuje archív balíky pre prácu s rôznymi formátmi archívov. Môžete použiť PSČ a decht na vytváranie, čítanie a zapisovanie archívnych súborov v týchto formátoch. Oba balíky podporujú rôzne kompresné algoritmy cez ľahko použiteľné API.
Takto môžete importovať balíky zip a tar do súborov Go:
importovať (
"archív/zip"
"archív/tar"
)
Po importovaní balíkov ich môžete použiť na vytváranie a manipuláciu s archívnymi súbormi.
Vytváranie a pridávanie súborov do archívov Tar
The decht balík pracuje s dechtom archívy formátov tar a tar.gz, vrátane podpory čítania a zápisu súborov s rozšírenými hlavičkami PAX.
Balenie dechtu poskytuje a NewWriter funkcia na vytváranie nových archívov tar. NewWriter berie na vedomie io. Spisovateľ inštancia rozhrania, ktorá môže byť súborom alebo vyrovnávacou pamäťou a vracia ukazovateľ na decht. Spisovateľ štrukturovať.
balík Hlavná
importovať (
"archív/tar"
"os"
)funcHlavná() {
// Vytvorenie nového súboru
súbor, _ := os. Vytvoriť("myarchive.tar")
odložiť súbor. Zavrieť()
// Vytvorte nový archív tar
tarWriter := tar. NewWriter (súbor)
odložiť tarWriter. Zavrieť()
}
The Vytvorte funkciu os balík vytvorí nový súbor tar. The decht. NewWriter funkcia zaberie súbor a vytvorí nový archív.
Súbory môžete pridávať do archívu tar pomocou WriteHeader a Napíšte funkcie. Funkcia WriteHeader trvá a decht. Hlavička štruktúra ako argument. Obsahuje metadáta súboru, ako je názov súboru, veľkosť a bity povolení. Funkcia Write zapíše obsah súboru do archívu.
importovať (
"archív/tar"
"fmt"
"io"
"log"
"os"
)funcHlavná() {
// Vytvorenie nového súboru
súbor, _ := os. Vytvoriť("myarchive.tar")
súbor, _ = os. Vytvoriť("message.txt")
odložiť súbor. Zavrieť()// Vytvorte nový archív tar
tarWriter := tar. NewWriter (súbor)
odložiť tarWriter. Zavrieť()
// Pridajte súbor do archívu
fileToAdd, _ := os. OTVORENÉ("file1.txt")
odložiť fileToAdd. Zavrieť()
fileInfo, _ := fileToAdd. Stat()
hlavička, _ := decht. FileInfoHeader (fileInfo, "")
tarWriter. WriteHeader (hlavička)
_, _ = io. Kopírovať (tarWriter, fileToAdd)
fmt. Println("Operácia archívu TAR dokončená")
}
Program vytvorí nové tar a textové súbory s Vytvorte funkciu os balík a nový archív tar s príponou NewWriter, pred pridaním súboru do archívu.
The OTVORENÉ funkcia otvorí súbor na pridanie do archívu. Všimnite si, že budete potrebovať súbor s názvom súbor1.txt vo vašom pracovnom adresári, aby ste tento program úspešne spustili.
Môžete použiť Stat funkciu inštancie súboru na načítanie metadát, ktoré budete potrebovať pre hlavičku tar. Pošlite jej výsledok do FileInfoHeader, potom odovzdajte tento výsledok WriteHeader funkciu na nastavenie súboru tar. Nakoniec skopírujte súbor do archívu pomocou io. Kopírovať.
Extrahovanie súborov z archívov Tar
Môžete použiť NewReader funkcia na čítanie obsahu archívneho súboru tar. Funkcia NewReader zaberá io. Čitateľ rozhranie, ktorým môže byť súbor alebo vyrovnávacia pamäť. Vracia ukazovateľ na a decht. Čitateľ štrukturovať.
importovať (
"archív/tar"
"io"
"os"
)funcHlavná() {
// Otvorte archív tar
súbor, _ := os. OTVORENÉ("myarchive.tar")
odložiť súbor. Zavrieť()// Vytvorenie nového čítača tar
tarReader := tar. NewReader (súbor)// Iterácia cez súbory v archíve
pre {
hlavička, chyba := tarReader. Ďalšie()ak chyba == io. EOF {
prestávka
}
// Extrahujte súbor
outFile, _ := os. Vytvoriť (hlavička. Názov)
odložiť outFile. Zavrieť()
_, _ = io. Kopírovať (outFile, tarReader)
}
}
The nekonečná slučka for prechádza inštanciou čítačky tar a extrahuje súbory skopírovaním každého súboru pomocou súboru io balíka Kopírovať funkciu.
Vytváranie a pridávanie súborov do archívov ZIP
Môžete vytvoriť nový zip archív pomocou NewWriter funkciu PSČ balík. Funkcia NewWriter prevezme inštanciu súboru a vráti zapisovač zipsu.
importovať (
"archív/zip"
"os"
)funcHlavná() {
// Vytvorenie nového súboru
súbor, chyba := os. Vytvoriť("archive.zip")ak chyba!= nula {
panika(chyba)
}odložiť súbor. Zavrieť()
// Vytvorenie nového zapisovača zipsu
zipWriter := zip. NewWriter (súbor)
odložiť zipWriter. Zavrieť()
}
The zipWriter premenná ukladá nový Spisovateľ príklad, ktorý NewWriter vráti.
Súbory môžete pridávať do archívov zip pomocou Vytvorte funkcia inštancie Writer. Funkcia Create prevezme názov súboru. Môžete tiež použiť Napíšte funkcia inštancie súboru zip na zapisovanie údajov do súborov v archívoch zip.
importovať (
"archív/zip"
"os"
)funcHlavná() {
// Vytvorenie nových súborov
súbor, chyba := os. Vytvoriť("archive.zip")
súbor, chyba = os. Vytvoriť("file1.txt")
súbor, chyba = os. Vytvoriť("file2.txt")ak chyba!= nula {
panika(chyba)
}odložiť súbor. Zavrieť()
// Vytvorenie nového zapisovača zipsu
zipWriter := zip. NewWriter (súbor)
odložiť zipWriter. Zavrieť()// Pridajte súbory do archívu
súbor1, chyba := zipWriter. Vytvoriť("file1.txt")ak chyba!= nula {
panika(chyba)
}súbor2, chyba := zipWriter. Vytvoriť("file2.txt")
ak chyba!= nula {
panika(chyba)
}
// Zápis údajov do súborov v archíve
súbor1.Napíš([]byte("Ahoj Svet!"))
súbor2.Napíš([]byte("Zbohom, Svet!"))
fmt. Println("operácia archivácie zip dokončená")
}
Hlavná funkcia začína použitím Vytvorte na vytvorenie nového súboru zip a dvoch textových súborov. Potom vytvorí dva zapisovače na pridanie týchto dvoch textových súborov do archívu. The Napíšte funkcia každej inštancie súboru zapisuje správy do každého súboru v archíve.
Extrahovanie súborov z archívov ZIP
Existujúci súbor zip môžete extrahovať jeho prečítaním pomocou súboru OpenReader funkciu, potom prechádzať jej obsahom a kopírovať súbory pomocou io balík.
importovať (
"archív/zip"
"fmt"
"io"
"os"
)funcHlavná() {
// Otvorte archív
zipReader, chyba := zip. OpenReader("archive.zip")ak chyba!= nula {
panika(chyba)
}odložiť zipReader. Zavrieť()
// Extrahujte súbory z archívu
pre _, súbor := rozsah zipReader. Súbor {
zipedFile, chyba := súbor. OTVORENÉ()ak chyba!= nula {
panika(chyba)
}odložiť zipdFile. Zavrieť()
// Vytvorte nový súbor s rovnakým názvom, ako má skomprimovaný súbor
extrahovaný súbor, chyba := os. Vytvorte (súbor. Názov)ak chyba!= nula {
panika(chyba)
}odložiť extrahovaný súbor. Zavrieť()
// Skopírujte údaje z komprimovaného súboru do nového súboru
_, chyba = io. Kopírovať (extrahovaný súbor, zazipovaný súbor)ak chyba!= nula {
panika(chyba)
}
fmt. Printf("Extrahované %s\n", súbor. Názov)
}
}
The OpenReader funkcia číta zip archívy. The OpenReader funkcia akceptuje názov súboru zip ako argument a vráti inštanciu čítačky súboru zip. The pre-rozsah slučka prechádza cez obsah súborov v inštancii čítačky. Vytvorí nový súbor s rovnakým názvom ako pôvodný súbor a skopíruje obsah extrahovaného súboru do nového súboru pomocou io. Kopírovať funkciu.
Rozbaľte ručne alebo programovo – je to na vás
Programové rozbalenie súborov je vhodné, ak máte na rozbalenie veľa súborov alebo archívov. Možno tiež integrujete funkciu archívu do svojej hlavnej aplikácie.
V iných prípadoch môže byť lepšie použiť existujúce aplikácie. Na rozbalenie archívov v systémoch Windows, macOS a Linux môžete použiť vstavané aplikácie alebo aplikácie tretích strán.