Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju. Čitaj više.

Arhive grupiraju nekoliko datoteka zajedno u jedan format, obično zip, tar ili rar. Arhivske datoteke također mogu koristiti kompresiju za smanjenje ukupne veličine datoteke.

Možete koristiti arhive za distribuciju softvera i podataka, uključujući web stranice. Također možete arhivirati svoju aplikaciju, sa svim njezinim datotekama i ovisnostima, kako bi je korisnici mogli preuzeti i instalirati.

Goov arhivski paket omogućuje stvaranje i izdvajanje arhiva u tar i zip formatima.

Go’s Archive paket

Go pruža arhiva paketi za rad s raznim arhivskim formatima. Možete koristiti zip i katran pakete za stvaranje, čitanje i pisanje arhivskih datoteka u tim formatima. Oba paketa podržavaju različite algoritme kompresije preko API-ja koji je jednostavan za korištenje.

Evo kako možete uvesti zip i tar pakete u svoje Go datoteke:

uvoz (
"arhiva/zip"
"arhiva/tar"
)

Nakon uvoza paketa, možete ih koristiti za stvaranje i rukovanje arhivskim datotekama.

instagram viewer

Stvaranje i dodavanje datoteka u Tar arhive

The katran paket radi s tar arhive formata tar i tar.gz, uključujući podršku za čitanje i pisanje datoteka s PAX proširenim zaglavljima.

Tar paket pruža a NewWriter funkcija za stvaranje novih tar arhiva. NewWriter preuzima an io. Pisac instanca sučelja koja može biti datoteka ili međuspremnik memorije i vraća pokazivač na katran. Pisac strukturirati

paket glavni

uvoz (
"arhiva/tar"
"os"
)

funkglavni() {
// Kreirajte novu datoteku
datoteka, _ := os. Stvoriti("mojaarhiva.tar")
odgoditi datoteka. Zatvoriti()

// Kreirajte novu tar arhivu
tarWriter := tar. NewWriter (datoteka)
odgoditi tarWriter. Zatvoriti()
}

The Stvoriti funkcija os paket stvara novu tar datoteku. The katran. NewWriter funkcija preuzima datoteku i stvara novu arhivu.

Možete dodavati datoteke u tar arhivu s WriteHeader i Pisati funkcije. Funkcija WriteHeader uzima a katran. Zaglavlje struktura kao argument. Ovo sadrži metapodatke datoteke, kao što su naziv datoteke, veličina i bitovi dopuštenja. Funkcija Write zapisuje sadržaj datoteke u arhivu.

uvoz (
"arhiva/tar"
"fmt"
"jo"
"log"
"os"
)

funkglavni() {
// Kreirajte novu datoteku
datoteka, _ := os. Stvoriti("mojaarhiva.tar")
datoteka, _ = os. Stvoriti("poruka.txt")
odgoditi datoteka. Zatvoriti()

// Kreirajte novu tar arhivu
tarWriter := tar. NewWriter (datoteka)
odgoditi tarWriter. Zatvoriti()

// Dodavanje datoteke u arhivu
fileToAdd, _ := os. Otvoren("datoteka1.txt")
odgoditi fileToAdd. Zatvoriti()
fileInfo, _ := fileToAdd. statistika()
zaglavlje, _ := tar. FileInfoHeader (fileInfo, "")
tarWriter. WriteHeader (zaglavlje)
_, _ = io. Kopiraj (tarWriter, fileToAdd)
fmt. Println("TAR arhivska operacija završena")
}

Program stvara nove tar i tekstualne datoteke s Stvoriti funkcija os paket i novu tar arhivu s NewWriter, prije dodavanja datoteke u arhivu.

The Otvoren funkcija otvara datoteku za dodavanje u arhivu. Imajte na umu da će vam trebati datoteka pod nazivom datoteka1.txt u vašem radnom direktoriju za uspješno pokretanje ovog programa.

Možete koristiti Stat funkciju instance datoteke za dohvaćanje metapodataka koji će vam trebati za tar zaglavlje. Proslijedite rezultat na FileInfoHeader, zatim proslijedite taj rezultat WriteHeader funkcija za postavljanje tar datoteke. Na kraju kopirajte datoteku u arhivu pomoću io. Kopirati.

Izdvajanje datoteka iz Tar arhiva

Možete koristiti NewReader funkcija za čitanje sadržaja tar arhivske datoteke. Funkcija NewReader preuzima an io. Čitač sučelje koje može biti datoteka ili memorijski međuspremnik. Vraća pokazivač na a katran. Čitač strukturirati

uvoz (
"arhiva/tar"
"jo"
"os"
)

funkglavni() {
// Otvori tar arhivu
datoteka, _ := os. Otvoren("mojaarhiva.tar")
odgoditi datoteka. Zatvoriti()

// Kreirajte novi tar čitač
tarReader := tar. NewReader (datoteka)

// Iteracija po datotekama u arhivi
za {
zaglavlje, pogreška := tarReader. Sljedeći()

ako pogreška == io. EOF {
pauza
}

// Ekstrakt datoteke
izlazna datoteka, _ := os. Stvori (zaglavlje. Ime)
odgoditi izlazna datoteka. Zatvoriti()
_, _ = io. Kopiraj (outFile, tarReader)
}
}

The beskonačna for petlja prelazi instancu čitača tar i izdvaja datoteke kopiranjem svake datoteke s io paketa Kopirati funkcija.

Stvaranje i dodavanje datoteka u Zip arhive

Možete stvoriti novu zip arhivu s NewWriter funkcija zip paket. Funkcija NewWriter preuzima instancu datoteke i vraća zip program za pisanje.

uvoz (
"arhiva/zip"
"os"
)

funkglavni() {
// Kreirajte novu datoteku
datoteka, pogreška := os. Stvoriti("arhiva.zip")

ako pogriješiti != nula {
panika(greška)
}

odgoditi datoteka. Zatvoriti()

// Stvorite novi program za zip pisanje
zipWriter := zip. NewWriter (datoteka)
odgoditi zipWriter. Zatvoriti()
}

The zipWriter varijabla pohranjuje novi Pisac instanca koju NewWriter vraća.

Možete dodavati datoteke u svoje zip arhive pomoću Stvoriti funkcija Writer instance. Funkcija Create preuzima naziv datoteke. Također možete koristiti Pisati funkcija instance zip datoteke za pisanje podataka u datoteke u zip arhivama.

uvoz (
"arhiva/zip"
"os"
)

funkglavni() {
// Stvaranje novih datoteka
datoteka, pogreška := os. Stvoriti("arhiva.zip")
datoteka, pogreška = os. Stvoriti("datoteka1.txt")
datoteka, pogreška = os. Stvoriti("datoteka2.txt")

ako pogriješiti != nula {
panika(greška)
}

odgoditi datoteka. Zatvoriti()

// Stvorite novi program za zip pisanje
zipWriter := zip. NewWriter (datoteka)
odgoditi zipWriter. Zatvoriti()

// Dodavanje datoteka u arhivu
datoteka1, pogreška := zipWriter. Stvoriti("datoteka1.txt")

ako pogriješiti != nula {
panika(greška)
}

datoteka2, pogreška := zipWriter. Stvoriti("datoteka2.txt")

ako pogriješiti != nula {
panika(greška)
}

// Zapisivanje podataka u datoteke u arhivi
file1.Write([]bajt("Pozdrav svijete!"))
file2.Write([]bajt("Zbogom, Svijete!"))
fmt. Println("operacija zip arhiviranja dovršena")
}

Glavna funkcija počinje korištenjem Stvoriti za stvaranje nove zip datoteke i dvije tekstualne datoteke. Zatim stvara dva pisca za dodavanje dvije tekstualne datoteke u arhivu. The Pisati funkcija svake instance datoteke piše poruke u svaku od datoteka u arhivi.

Izdvajanje datoteka iz Zip arhiva

Možete izdvojiti postojeću zip datoteku čitajući je pomoću OpenReader funkciju, zatim lupanje kroz njezin sadržaj i kopiranje datoteka pomoću io paket.

uvoz (
"arhiva/zip"
"fmt"
"jo"
"os"
)

funkglavni() {
// Otvori arhivu
zipReader, pogreška := zip. OpenReader("arhiva.zip")

ako pogriješiti != nula {
panika(greška)
}

odgoditi zipReader. Zatvoriti()

// Ekstrakt datoteka iz arhive
za _, datoteka := domet zipReader. Datoteka {
komprimirana datoteka, pogreška := datoteka. Otvoren()

ako pogriješiti != nula {
panika(greška)
}

odgoditi komprimirana datoteka. Zatvoriti()

// Stvorite novu datoteku s istim nazivom kao komprimirana datoteka
izvađena datoteka, pogreška := os. Stvori (datoteku. Ime)

ako pogriješiti != nula {
panika(greška)
}

odgoditi izvađenaDatoteka. Zatvoriti()

// Kopirajte podatke iz komprimirane datoteke u novu datoteku
_, pogreška = io. Kopiraj (ekstrahirana datoteka, komprimirana datoteka)

ako pogriješiti != nula {
panika(greška)
}

fmt. Ispisf("Izdvojeno %s\n", datoteka. Ime)
}
}

The OpenReader funkcija čita zip arhive. The OpenReader funkcija prihvaća naziv zip datoteke kao argument i vraća instancu čitača zip datoteke. The za-domet petlja prolazi kroz sadržaj datoteka u instanci čitača. Stvara novu datoteku s istim nazivom kao izvorna datoteka i kopira sadržaj izdvojene datoteke u novu datoteku pomoću io. Kopirati funkcija.

Raspakirajte ručno ili programski - na vama je

Programsko raspakiranje datoteka prikladno je ako imate mnogo datoteka ili arhiva za raspakiranje. Možda također integrirate funkciju arhiviranja u svoju glavnu aplikaciju.

U drugim slučajevima, možda bi bilo bolje koristiti postojeće aplikacije. Možete koristiti ugrađene aplikacije ili aplikacije trećih strana za raspakiranje arhiva u sustavima Windows, macOS i Linux.