Teiesugused lugejad aitavad MUO-d toetada. Kui teete ostu meie saidil olevate linkide abil, võime teenida sidusettevõtte komisjonitasu. Loe rohkem.

Arhiivid koondavad mitu faili ühte vormingusse, tavaliselt zip-, tar- või rar-vormingusse. Arhiivifailid võivad faili kogumahu vähendamiseks kasutada ka tihendamist.

Arhiive saate kasutada tarkvara ja andmete, sealhulgas veebilehtede levitamiseks. Samuti saate oma rakenduse koos kõigi selle failide ja sõltuvustega arhiivida, et kasutajad saaksid neid alla laadida ja installida.

Go arhiivipakett võimaldab teil luua ja ekstraktida arhiive tar- ja zip-vormingus.

Go's arhiivipakett

Mine pakub arhiiv paketid erinevate arhiivivormingutega töötamiseks. Võite kasutada tõmblukk ja tõrva paketid nendes vormingutes arhiivifailide loomiseks, lugemiseks ja kirjutamiseks. Mõlemad paketid toetavad hõlpsasti kasutatava API kaudu erinevaid tihendusalgoritme.

Siit saate importida zip- ja tar-pakette oma Go-failides.

importida (
"arhiiv/zip"
"arhiiv/tar"
)

Pärast pakettide importimist saate neid kasutada arhiivifailide loomiseks ja nendega manipuleerimiseks.

Failide loomine ja lisamine Tar arhiivi

The tõrva pakett töötab tõrvaga tar ja tar.gz vormingute arhiivid, sealhulgas PAX-i laiendatud päistega failide lugemise ja kirjutamise tugi.

Tõrvapakett annab a UusKirjanik funktsioon uute tar arhiivide loomiseks. NewWriter võtab sisse an io. Kirjanik liidese eksemplar, mis võib olla fail või mälupuhver ja tagastab kursori tõrva. Kirjanik struktuur.

pakett peamine

importida (
"arhiiv/tar"
"os"
)

funcpeamine() {
// Looge uus fail
fail, _ := os. Loo("myarchive.tar")
edasi lükata faili. Sulge()

// Loo uus tar arhiiv
tarWriter := tar. NewWriter (fail)
edasi lükata tarWriter. Sulge()
}

The Loo funktsioon os pakett loob uue tar-faili. The tõrva. UusKirjanik funktsioon võtab faili sisse ja loob uue arhiivi.

Tar-arhiivi saate faile lisada rakendusega WriteHeader ja Kirjutage funktsioonid. WriteHeader funktsioon võtab a tõrva. Päis struktuur kui argument. See sisaldab faili metaandmeid, nagu faili nimi, suurus ja lubade bitid. Funktsioon Write kirjutab faili sisu arhiivi.

importida (
"arhiiv/tar"
"fmt"
"io"
"logi"
"os"
)

funcpeamine() {
// Looge uus fail
fail, _ := os. Loo("myarchive.tar")
fail, _ = os. Loo("message.txt")
edasi lükata faili. Sulge()

// Loo uus tar arhiiv
tarWriter := tar. NewWriter (fail)
edasi lükata tarWriter. Sulge()

// Faili lisamine arhiivi
fileToAdd, _ := os. Open("fail1.txt")
edasi lükata Lisatav fail. Sulge()
fileInfo, _ := fileToAdd. Stat()
päis, _ := tar. FileInfoHeader (fileInfo, "")
tarWriter. WriteHeader (päis)
_, _ = io. Kopeeri (tarWriter, fileToAdd)
fmt. Println("TAR-i arhiivitoiming lõpetatud")
}

Programm loob rakendusega uued tar- ja tekstifailid Loo funktsioon os pakett ja uus tõrva arhiiv koos UusKirjanik, enne faili arhiivi lisamist.

The Avatud funktsioon avab arhiivi lisatava faili. Pange tähele, et vajate faili nimega fail1.txt selle programmi edukaks käitamiseks oma töökataloogis.

Võite kasutada Stat failieksemplari funktsioon tar-päise jaoks vajalike metaandmete toomiseks. Edastage selle tulemus FileInfoHeader, seejärel edastage tulemus sellele WriteHeader funktsioon tar-faili seadistamiseks. Lõpuks kopeerige fail arhiivi kasutades io. Kopeeri.

Failide ekstraktimine Tar arhiivist

Võite kasutada UusReader funktsioon tar arhiivifaili sisu lugemiseks. Funktsioon NewReader võtab sisse io. Lugeja liides, mis võib olla fail või mälupuhver. See tagastab kursori a-le tõrva. Lugeja struktuur.

importida (
"arhiiv/tar"
"io"
"os"
)

funcpeamine() {
// Avage tõrva arhiiv
fail, _ := os. Open("myarchive.tar")
edasi lükata faili. Sulge()

// Loo uus tõrvalugeja
tarReader := tõrv. NewReader (fail)

// Itereerige arhiivis olevaid faile
jaoks {
päis, err := tarReader. Järgmine()

kui eksitus == io. EOF {
murda
}

// Faili ekstraktimine
outFile, _ := os. Loo (päis. nimi)
edasi lükata outFile. Sulge()
_, _ = io. Kopeeri (outFile, tarReader)
}
}

The tsükli jaoks lõpmatu läbib tar-lugeja eksemplari ja ekstraktib failid, kopeerides iga faili koos io pakendid Kopeeri funktsiooni.

Zip-arhiivi failide loomine ja lisamine

Saate luua uue ZIP-arhiivi rakendusega UusKirjanik funktsioon tõmblukk pakett. Funktsioon NewWriter võtab failieksemplari ja tagastab ZIP-kirjutaja.

importida (
"arhiiv/zip"
"os"
)

funcpeamine() {
// Looge uus fail
fail, err := os. Loo("archive.zip")

kui eks!= null {
paanika(viga)
}

edasi lükata faili. Sulge()

// Looge uus ZIP-kirjutaja
zipWriter := zip. NewWriter (fail)
edasi lükata zipWriter. Sulge()
}

The zipWriter muutuja salvestab uue Kirjanik näide, mille NewWriter tagastab.

Saate oma ZIP-arhiivi faile lisada rakendusega Loo Writeri eksemplari funktsioon. Funktsioon Loo sisestab faili nime. Võite kasutada ka Kirjutage ZIP-faili eksemplari funktsioon andmete kirjutamiseks ZIP-arhiivides olevatesse failidesse.

importida (
"arhiiv/zip"
"os"
)

funcpeamine() {
// Looge uusi faile
fail, err := os. Loo("archive.zip")
fail, err = os. Loo("fail1.txt")
fail, err = os. Loo("fail2.txt")

kui eks!= null {
paanika(viga)
}

edasi lükata faili. Sulge()

// Looge uus ZIP-kirjutaja
zipWriter := zip. NewWriter (fail)
edasi lükata zipWriter. Sulge()

// Failide lisamine arhiivi
fail1, err := zipWriter. Loo("fail1.txt")

kui eks!= null {
paanika(viga)
}

file2, err := zipWriter. Loo("fail2.txt")

kui eks!= null {
paanika(viga)
}

// Kirjutage andmed arhiivis olevatesse failidesse
file1.Write([]bait("Tere, Maailm!"))
file2.Write([]bait("Hüvasti, maailm!"))
fmt. Println("zip-arhiveerimise toiming lõpetatud")
}

Põhifunktsioon algab kasutamisega Loo uue ZIP-faili ja kahe tekstifaili loomiseks. Seejärel loob see kaks kirjutit, et lisada need kaks tekstifaili arhiivi. The Kirjutage iga failieksemplari funktsioon kirjutab sõnumeid igale arhiivis olevale failile.

Failide ekstraktimine ZIP-arhiividest

Olemasoleva ZIP-faili saate ekstraktida, lugedes seda nupuga OpenReader funktsioon, sirvida selle sisu läbi ja kopeerida failid rakendusega io pakett.

importida (
"arhiiv/zip"
"fmt"
"io"
"os"
)

funcpeamine() {
// Ava arhiiv
zipReader, err := zip. OpenReader("archive.zip")

kui eks!= null {
paanika(viga)
}

edasi lükata zipReader. Sulge()

// Failide ekstraktimine arhiivist
jaoks _, fail := ulatus zipReader. Fail {
zippedFile, err := fail. Ava ()

kui eks!= null {
paanika(viga)
}

edasi lükata zippedFile. Sulge()

// Looge ZIP-failiga sama nimega uus fail
ekstraktitud fail, err := os. Loo (fail. nimi)

kui eks!= null {
paanika(viga)
}

edasi lükata ekstraktitud fail. Sulge()

// Kopeerige andmed ZIP-failist uude faili
_, err = io. Kopeeri (extractedFile, zippedFile)

kui eks!= null {
paanika(viga)
}

fmt. Printf("Ekstraheeritud %s\n", fail. nimi)
}
}

The OpenReader funktsioon loeb zip-arhiive. The OpenReader funktsioon aktsepteerib argumendina ZIP-faili nime ja tagastab ZIP-faili lugeja eksemplari. The vahemiku jaoks silmus läbib lugeja eksemplari failide sisu. See loob uue faili, millel on sama nimi kui algsel failil, ja kopeerib ekstraktitud faili sisu uude faili kasutades io. Kopeeri funktsiooni.

Pakkige lahti käsitsi või programmiliselt – see on teie otsustada

Failide programmiline lahtipakkimine on mugav, kui teil on lahtipakkimiseks palju faile või arhiive. Samuti võite integreerida arhiivifunktsioonid oma põhirakendusse.

Muudel juhtudel võib olla parem kasutada olemasolevaid rakendusi. Windowsi, macOS-i ja Linuxi arhiivide lahtipakkimiseks saate kasutada sisseehitatud või kolmanda osapoole rakendusi.