Kaltaisesi lukijat auttavat tukemaan MUO: ta. Kun teet ostoksen käyttämällä sivustollamme olevia linkkejä, voimme ansaita kumppanipalkkion. Lue lisää.

Arkistot yhdistävät useita tiedostoja yhteen muotoon, yleensä zip-, tar- tai rar-muotoon. Arkistotiedostot voivat myös käyttää pakkausta tiedoston kokonaiskoon pienentämiseksi.

Voit käyttää arkistoja ohjelmistojen ja tietojen, mukaan lukien verkkosivujen, jakamiseen. Voit myös arkistoida sovelluksesi kaikkine tiedostoineen ja riippuvuuksineen, jotta käyttäjät voivat ladata ja asentaa sen.

Go: n arkistopaketin avulla voit luoda ja purkaa arkistoja tar- ja zip-muodoissa.

Goin arkistopaketti

Go tarjoaa arkisto paketit eri arkistomuotojen kanssa työskentelemiseen. Voit käyttää postinumero ja terva paketteja näiden tiedostomuotojen arkistotiedostojen luomiseen, lukemiseen ja kirjoittamiseen. Molemmat paketit tukevat erilaisia ​​pakkausalgoritmeja helppokäyttöisen API: n kautta.

Näin voit tuoda zip- ja tar-paketit Go-tiedostoihisi:

tuonti (
"arkisto/zip"
"arkisto/tar"
)
instagram viewer

Pakettien tuonnin jälkeen voit käyttää niitä arkistotiedostojen luomiseen ja käsittelemiseen.

Tiedostojen luominen ja lisääminen Tar-arkistoon

The terva paketti toimii tervan kanssa tar- ja tar.gz-muotojen arkistot, mukaan lukien tuki tiedostojen lukemiseen ja kirjoittamiseen PAX-laajennetuilla otsikoilla.

Tervapaketti tarjoaa a NewWriter toiminto uusien tar-arkistojen luomiseen. NewWriter ottaa sisään io. Kirjailija käyttöliittymän ilmentymä, joka voi olla tiedosto tai muistipuskuri ja palauttaa osoittimen terva. Kirjailija struct.

paketti pää

tuonti (
"arkisto/tar"
"os"
)

funcpää() {
// Luo uusi tiedosto
tiedosto, _ := os. Luoda("myarchive.tar")
lykätä tiedosto. Kiinni()

// Luo uusi tar-arkisto
tarWriter := tar. NewWriter (tiedosto)
lykätä tarWriter. Kiinni()
}

The Luoda toiminto os paketti luo uuden tar-tiedoston. The terva. NewWriter toiminto ottaa tiedoston ja luo uuden arkiston.

Voit lisätä tiedostoja tar-arkistoon komennolla WriteHeader ja Kirjoittaa toimintoja. WriteHeader-toiminto kestää a terva. Otsikko rakenne argumenttina. Tämä sisältää tiedoston metatiedot, kuten tiedoston nimen, koon ja käyttöoikeusbitit. Kirjoitustoiminto kirjoittaa tiedoston sisällön arkistoon.

tuonti (
"arkisto/tar"
"fmt"
"io"
"Hirsi"
"os"
)

funcpää() {
// Luo uusi tiedosto
tiedosto, _ := os. Luoda("myarchive.tar")
tiedosto, _ = os. Luoda("viesti.txt")
lykätä tiedosto. Kiinni()

// Luo uusi tar-arkisto
tarWriter := tar. NewWriter (tiedosto)
lykätä tarWriter. Kiinni()

// Lisää tiedosto arkistoon
fileToAdd, _ := os. Avata("tiedosto1.txt")
lykätä fileToAdd. Kiinni()
fileInfo, _ := fileToAdd. Tilasto()
otsikko, _ := tar. FileInfoHeader (fileInfo, "")
tarWriter. WriteHeader (otsikko)
_, _ = io. Kopioi (tarWriter, fileToAdd)
fmt. Println("TAR-arkistointi suoritettu")
}

Ohjelma luo uusia tar- ja tekstitiedostoja Luoda toiminto os paketti ja uusi tar-arkisto NewWriter, ennen kuin lisäät tiedoston arkistoon.

The Avata -toiminto avaa arkistoon lisättävän tiedoston. Huomaa, että tarvitset tiedoston nimeltä tiedosto1.txt työhakemistossasi suorittaaksesi tämän ohjelman onnistuneesti.

Voit käyttää Tilasto tiedostoesiintymän funktio tar-otsikkoa varten tarvittavien metatietojen hakemiseksi. Välitä sen tulos FileInfoHeader, välitä tulos sitten WriteHeader toiminto tar-tiedoston määrittämiseksi. Kopioi lopuksi tiedosto arkistoon käyttämällä io. Kopio.

Tiedostojen purkaminen Tar-arkistoista

Voit käyttää UusiReader toiminto lukea tar-arkistotiedoston sisältö. NewReader-toiminto ottaa käyttöön io. Lukija käyttöliittymä, joka voi olla tiedosto tai muistipuskuri. Se palauttaa osoittimen kohtaan a terva. Lukija struct.

tuonti (
"arkisto/tar"
"io"
"os"
)

funcpää() {
// Avaa tar-arkisto
tiedosto, _ := os. Avata("myarchive.tar")
lykätä tiedosto. Kiinni()

// Luo uusi tervanlukija
tarReader := tar. NewReader (tiedosto)

// Iteroi arkiston tiedostot
varten {
header, err := tarReader. Seuraava()

jos err == io. EOF {
tauko
}

// Pura tiedosto
outFile, _ := os. Luo (otsikko. Nimi)
lykätä outFile. Kiinni()
_, _ = io. Kopioi (outFile, tarReader)
}
}

The ääretön silmukalle kulkee tar-lukijan esiintymän läpi ja purkaa tiedostot kopioimalla jokaisen tiedoston io paketteja Kopio toiminto.

Tiedostojen luominen ja lisääminen Zip-arkistoon

Voit luoda uuden zip-arkiston käyttämällä NewWriter toiminto postinumero paketti. NewWriter-funktio ottaa tiedostoesiintymän ja palauttaa zip-kirjoittimen.

tuonti (
"arkisto/zip"
"os"
)

funcpää() {
// Luo uusi tiedosto
tiedosto, err := os. Luoda("archive.zip")

jos virhe! = nolla {
paniikki(err)
}

lykätä tiedosto. Kiinni()

// Luo uusi zip-kirjoitin
zipWriter := zip. NewWriter (tiedosto)
lykätä zipWriter. Kiinni()
}

The zipWriter muuttuja tallentaa uuden Kirjailija esimerkki, jonka NewWriter palauttaa.

Voit lisätä tiedostoja zip-arkistoon käyttämällä Luoda Writer-esiintymän toiminto. Luo-toiminto ottaa tiedoston nimen. Voit myös käyttää Kirjoittaa zip-tiedostoinstanssin toiminto tietojen kirjoittamiseen zip-arkistojen tiedostoihin.

tuonti (
"arkisto/zip"
"os"
)

funcpää() {
// Luo uusia tiedostoja
tiedosto, err := os. Luoda("archive.zip")
tiedosto, err = os. Luoda("tiedosto1.txt")
tiedosto, err = os. Luoda("tiedosto2.txt")

jos virhe! = nolla {
paniikki(err)
}

lykätä tiedosto. Kiinni()

// Luo uusi zip-kirjoitin
zipWriter := zip. NewWriter (tiedosto)
lykätä zipWriter. Kiinni()

// Lisää tiedostoja arkistoon
tiedosto1, err := zipWriter. Luoda("tiedosto1.txt")

jos virhe! = nolla {
paniikki(err)
}

tiedosto2, err := zipWriter. Luoda("tiedosto2.txt")

jos virhe! = nolla {
paniikki(err)
}

// Kirjoita tiedot arkiston tiedostoihin
file1.Write([]tavu("Hei maailma!"))
file2.Write([]tavu("Hyvästi, maailma!"))
fmt. Println("zip-arkistointi suoritettu")
}

Päätoiminto alkaa käyttämällä Luoda luodaksesi uuden zip-tiedoston ja kaksi tekstitiedostoa. Sitten se luo kaksi Writeria lisäämään kaksi tekstitiedostoa arkistoon. The Kirjoittaa jokaisen tiedostoinstanssin toiminto kirjoittaa viestejä jokaiseen arkiston tiedostoon.

Tiedostojen purkaminen Zip-arkistoista

Voit purkaa olemassa olevan zip-tiedoston lukemalla sen OpenReader -toimintoa, selaa sitten sen sisältöä ja kopioi tiedostoja -sovelluksella io paketti.

tuonti (
"arkisto/zip"
"fmt"
"io"
"os"
)

funcpää() {
// Avaa arkisto
zipReader, err := zip. OpenReader("archive.zip")

jos virhe! = nolla {
paniikki(err)
}

lykätä zipReader. Kiinni()

// Pura tiedostot arkistosta
varten _, tiedosto := alue zipReader. Tiedosto {
zippedFile, err := tiedosto. Avata()

jos virhe! = nolla {
paniikki(err)
}

lykätä zippedFile. Kiinni()

// Luo uusi tiedosto samalla nimellä kuin pakattu tiedosto
purettu tiedosto, err := os. Luo (tiedosto. Nimi)

jos virhe! = nolla {
paniikki(err)
}

lykätä purettu tiedosto. Kiinni()

// Kopioi tiedot pakatusta tiedostosta uuteen tiedostoon
_, err = io. Kopioi (purettu tiedosto, zippedFile)

jos virhe! = nolla {
paniikki(err)
}

fmt. Printf("purettu %s\n", tiedosto. Nimi)
}
}

The OpenReader toiminto lukee zip-arkistoja. The OpenReader funktio hyväksyy zip-tiedoston nimen argumenttina ja palauttaa zip-tiedoston lukuinstanssin. The -alueelle silmukka kulkee lukijainstanssissa olevien tiedostojen sisällön läpi. Se luo uuden tiedoston, jolla on sama nimi kuin alkuperäisellä tiedostolla, ja kopioi puretun tiedoston sisällön uuteen tiedostoon käyttämällä io. Kopio toiminto.

Pura manuaalisesti tai ohjelmallisesti – se on sinun

Tiedostojen ohjelmallinen purkaminen on kätevää, jos sinulla on useita tiedostoja tai arkistoja purettavana. Saatat myös integroida arkistointitoiminnot pääsovellukseesi.

Muissa tapauksissa saatat olla parempi käyttää olemassa olevia sovelluksia. Voit käyttää sisäänrakennettuja tai kolmannen osapuolen sovelluksia arkiston purkamiseen Windowsissa, macOS: ssä ja Linuxissa.