Tokie skaitytojai kaip jūs padeda palaikyti MUO. Kai perkate naudodami nuorodas mūsų svetainėje, galime uždirbti filialų komisinius. Skaityti daugiau.

Archyvai sujungia kelis failus į vieną formatą, paprastai zip, tar arba rar. Archyviniai failai taip pat gali naudoti glaudinimą, kad sumažintų bendrą failo dydį.

Galite naudoti archyvus programinei įrangai ir duomenims, įskaitant tinklalapius, platinti. Taip pat galite archyvuoti savo programą su visais failais ir priklausomybėmis, kad vartotojai galėtų atsisiųsti ir įdiegti.

„Go“ archyvo paketas leidžia kurti ir išskleisti archyvus tar ir zip formatais.

„Go“ archyvo paketas

Eik suteikia archyvas paketai darbui su įvairiais archyvo formatais. Galite naudoti užtrauktukas ir deguto paketai, skirti kurti, skaityti ir rašyti archyvo failus šiais formatais. Abu paketai palaiko įvairius glaudinimo algoritmus per lengvai naudojamą API.

Štai kaip galite importuoti zip ir tar paketus į savo Go failus:

importuoti (
"archyvas/zip"
"archyvas/tar"
)

Importavę paketus galite juos naudoti archyvo failams kurti ir jais valdyti.

instagram viewer

Failų kūrimas ir įtraukimas į Tar archyvus

The deguto paketas veikia su derva tar ir tar.gz formatų archyvai, įskaitant failų skaitymo ir rašymo palaikymą su išplėstomis PAX antraštėmis.

Deguto paketas suteikia a Naujasis Rašytojas Naujų tar archyvų kūrimo funkcija. NewWriter priima an io. Rašytojas sąsajos egzempliorius, kuris gali būti failas arba atminties buferis ir grąžina žymeklį į deguto. Rašytojas struktūra.

paketą pagrindinis

importuoti (
"archyvas/tar"
"os"
)

funcpagrindinis() {
// Sukurkite naują failą
failas, _ := os. Sukurti ("myarchive.tar")
atidėti failą. Uždaryti()

// Sukurkite naują tar archyvą
tarWriter := tar. NewWriter (failas)
atidėti tarWriter. Uždaryti()
}

The Sukurti funkcija os paketas sukuria naują tar failą. The deguto. Naujasis Rašytojas funkcija paima failą ir sukuria naują archyvą.

Failus į tar archyvą galite įtraukti naudodami WriteHeader ir Rašyti funkcijas. Funkcija WriteHeader trunka a deguto. Antraštė struktūra kaip argumentas. Jame yra failo metaduomenys, pvz., failo pavadinimas, dydis ir leidimo bitai. Funkcija Write įrašo failo turinį į archyvą.

importuoti (
"archyvas/tar"
"fmt"
"io"
"rąstas"
"os"
)

funcpagrindinis() {
// Sukurkite naują failą
failas, _ := os. Sukurti ("myarchive.tar")
failas, _ = os. Sukurti ("pranešimas.txt")
atidėti failą. Uždaryti()

// Sukurkite naują tar archyvą
tarWriter := tar. NewWriter (failas)
atidėti tarWriter. Uždaryti()

// Pridėti failą į archyvą
fileToAdd, _ := os. Atviras("failas1.txt")
atidėti fileToAdd. Uždaryti()
fileInfo, _ := fileToAdd. Stat()
antraštė, _ := tar. FileInfoHeader (fileInfo, "")
tarWriter. WriteHeader (antraštė)
_, _ = io. Kopijuoti (tarWriter, fileToAdd)
fmt. Println(„TAR archyvo operacija baigta“)
}

Programa sukuria naujus tar ir tekstinius failus su Sukurti funkcija os paketą ir naują tar archyvą su Naujasis Rašytojas, prieš įtraukdami failą į archyvą.

The Atviras funkcija atidaro failą, kurį norite įtraukti į archyvą. Atminkite, kad jums reikės failo pavadinimu failas1.txt savo darbo kataloge, kad sėkmingai paleistumėte šią programą.

Galite naudoti Stat failo egzemplioriaus funkcija, norint gauti metaduomenis, kurių jums reikės tar antraštei. Perduokite jo rezultatą FileInfoHeader, tada perduokite rezultatą WriteHeader funkcija, skirta nustatyti tar failą. Galiausiai nukopijuokite failą į archyvą naudodami io. Kopijuoti.

Failų ištraukimas iš Tar archyvų

Galite naudoti Naujas Skaitytojas funkcija nuskaityti tar archyvo failo turinį. Funkcija „NewReader“ įjungia io. Skaitytojas sąsaja, kuri gali būti failas arba atminties buferis. Jis grąžina žymeklį į a deguto. Skaitytojas struktūra.

importuoti (
"archyvas/tar"
"io"
"os"
)

funcpagrindinis() {
// Atidarykite tar archyvą
failas, _ := os. Atviras("myarchive.tar")
atidėti failą. Uždaryti()

// Sukurkite naują deguto skaitytuvą
tarReader := tar. NewReader (failas)

// Pakartokite archyve esančius failus
dėl {
antraštė, klaida := tarReader. Kitas()

jeigu klaida == io. EOF {
pertrauka
}

// Išskleiskite failą
outFile, _ := os. Sukurti (antraštė. Vardas)
atidėti outFile. Uždaryti()
_, _ = io. Kopijuoti (outFile, tarReader)
}
}

The begalinis ciklas eina per tar skaitytuvo egzempliorių ir ištraukia failus nukopijuodami kiekvieną failą su io paketai Kopijuoti funkcija.

Failų kūrimas ir įtraukimas į ZIP archyvus

Galite sukurti naują ZIP archyvą naudodami Naujasis Rašytojas funkcija užtrauktukas paketą. Funkcija NewWriter paima failo egzempliorių ir grąžina zip rašiklį.

importuoti (
"archyvas/zip"
"os"
)

funcpagrindinis() {
// Sukurkite naują failą
failas, klaida := os. Sukurti ("archive.zip")

jeigu klysta! = nulis {
panika(klaida)
}

atidėti failą. Uždaryti()

// Sukurti naują zip rašytoją
zipWriter := zip. NewWriter (failas)
atidėti zipWriter. Uždaryti()
}

The zipWriter kintamasis saugo naują Rašytojas pavyzdys, kurį grąžina „NewWriter“.

Galite pridėti failų į savo ZIP archyvus naudodami Sukurti Writer egzemplioriaus funkcija. Funkcija Sukurti įveda failo pavadinimą. Taip pat galite naudoti Rašyti zip failo egzemplioriaus funkcija, skirta įrašyti duomenis į failus ZIP archyvuose.

importuoti (
"archyvas/zip"
"os"
)

funcpagrindinis() {
// Sukurti naujus failus
failas, klaida := os. Sukurti ("archive.zip")
failas, err = os. Sukurti ("failas1.txt")
failas, err = os. Sukurti ("failas2.txt")

jeigu klysta! = nulis {
panika(klaida)
}

atidėti failą. Uždaryti()

// Sukurti naują zip rašytoją
zipWriter := zip. NewWriter (failas)
atidėti zipWriter. Uždaryti()

// Pridėti failus į archyvą
file1, err := zipWriter. Sukurti ("failas1.txt")

jeigu klysta! = nulis {
panika(klaida)
}

file2, err := zipWriter. Sukurti ("failas2.txt")

jeigu klysta! = nulis {
panika(klaida)
}

// Įrašykite duomenis į archyve esančius failus
file1.Write([]baitas("Labas pasauli!"))
file2.Write([]baitas("Sudie, pasauli!"))
fmt. Println(„zip archyvavimo operacija baigta“)
}

Pagrindinė funkcija prasideda naudojant Sukurti Norėdami sukurti naują ZIP failą ir du tekstinius failus. Tada jis sukuria du rašytojus, kad pridėtų du tekstinius failus į archyvą. The Rašyti Kiekvieno failo egzemplioriaus funkcija rašo pranešimus į kiekvieną archyve esantį failą.

Failų ištraukimas iš ZIP archyvų

Galite išskleisti esamą ZIP failą skaitydami jį naudodami OpenReader funkcija, tada peržiūrėkite jos turinį ir nukopijuokite failus naudodami io paketą.

importuoti (
"archyvas/zip"
"fmt"
"io"
"os"
)

funcpagrindinis() {
// Atidarykite archyvą
zipReader, err := zip. OpenReader("archive.zip")

jeigu klysta! = nulis {
panika(klaida)
}

atidėti zipReader. Uždaryti()

// Išskleiskite failus iš archyvo
dėl _, failas := diapazonas zipReader. Failas {
zippedFile, err := failas. Atviras()

jeigu klysta! = nulis {
panika(klaida)
}

atidėti zippedFile. Uždaryti()

// Sukurkite naują failą tokiu pačiu pavadinimu kaip ir supakuotas failas
ExtractedFile, err := os. Sukurti (failą. Vardas)

jeigu klysta! = nulis {
panika(klaida)
}

atidėti ištrauktas failas. Uždaryti()

// Nukopijuokite duomenis iš suglaudinto failo į naują failą
_, err = io. Kopijuoti (ExtractedFile, zippedFile)

jeigu klysta! = nulis {
panika(klaida)
}

fmt. Printf(„Išskirta %s\n“, failas. Vardas)
}
}

The OpenReader funkcija skaito zip archyvus. The OpenReader funkcija priima ZIP failo pavadinimą kaip argumentą ir grąžina ZIP failo skaitytuvo egzempliorių. The už diapazoną kilpa eina per skaitytuvo egzempliorių failų turinį. Jis sukuria naują failą tokiu pačiu pavadinimu kaip ir pradinis failas ir nukopijuoja ištraukto failo turinį į naują failą, naudodamas io. Kopijuoti funkcija.

Išpakuokite rankiniu būdu arba programiškai – tai priklauso nuo jūsų

Programiškai išpakuoti failus patogu, jei turite daug failų ar archyvų, kuriuos reikia išpakuoti. Taip pat galite integruoti archyvo funkcijas į savo pagrindinę programą.

Kitais atvejais jums gali būti geriau naudoti esamas programas. Galite naudoti įtaisytąsias arba trečiųjų šalių programas, kad išpakuotumėte archyvus sistemoje „Windows“, „MacOS“ ir „Linux“.