Αναγνώστες σαν εσάς βοηθούν στην υποστήριξη του MUO. Όταν κάνετε μια αγορά χρησιμοποιώντας συνδέσμους στον ιστότοπό μας, ενδέχεται να κερδίσουμε μια προμήθεια θυγατρικών. Διαβάστε περισσότερα.

Τα αρχεία ομαδοποιούν πολλά αρχεία μαζί σε μια ενιαία μορφή, συνήθως zip, tar ή rar. Τα αρχεία αρχειοθέτησης ενδέχεται επίσης να χρησιμοποιούν συμπίεση για τη μείωση του συνολικού μεγέθους του αρχείου.

Μπορείτε να χρησιμοποιήσετε τα αρχεία για τη διανομή λογισμικού και δεδομένων, συμπεριλαμβανομένων ιστοσελίδων. Μπορείτε επίσης να αρχειοθετήσετε την εφαρμογή σας, με όλα τα αρχεία και τις εξαρτήσεις της, για λήψη και εγκατάσταση από τους χρήστες.

Το πακέτο αρχειοθέτησης της Go σάς επιτρέπει να δημιουργείτε και να εξάγετε αρχεία σε μορφές tar και zip.

Πακέτο αρχείου Go's

Το Go παρέχει αρχείο πακέτα για εργασία με διάφορες μορφές αρχειοθέτησης. Μπορείτε να χρησιμοποιήσετε το φερμουάρ και πίσσα πακέτα για τη δημιουργία, ανάγνωση και εγγραφή αρχείων αρχειοθέτησης σε αυτές τις μορφές. Και τα δύο πακέτα υποστηρίζουν διάφορους αλγόριθμους συμπίεσης μέσω ενός εύχρηστου API.

instagram viewer

Δείτε πώς μπορείτε να εισαγάγετε τα πακέτα zip και tar στα αρχεία Go σας:

εισαγωγή (
"αρχειοθήκη/zip"
"αρχείο/πίσσα"
)

Μετά την εισαγωγή των πακέτων, μπορείτε να τα χρησιμοποιήσετε για να δημιουργήσετε και να χειριστείτε αρχεία αρχειοθέτησης.

Δημιουργία και προσθήκη αρχείων στα αρχεία Tar

ο πίσσα το πακέτο λειτουργεί με πίσσα αρχεία μορφών tar και tar.gz, συμπεριλαμβανομένης της υποστήριξης για ανάγνωση και εγγραφή αρχείων με εκτεταμένες κεφαλίδες PAX.

Η συσκευασία πίσσας παρέχει α NewWriter λειτουργία για τη δημιουργία νέων αρχείων tar. Το NewWriter δέχεται ένα io. Συγγραφέας στιγμιότυπο διεπαφής που μπορεί να είναι αρχείο ή προσωρινή μνήμη και επιστρέφει έναν δείκτη στο πίσσα. Συγγραφέας struct.

πακέτο κύριος

εισαγωγή (
"αρχείο/πίσσα"
"os"
)

funcκύριος() {
// Δημιουργία νέου αρχείου
αρχείο, _ := os. Δημιουργώ("myarchive.tar")
αναβάλλω αρχείο. Κλείσε()

// Δημιουργία νέου αρχείου tar
tarWriter := tar. NewWriter (αρχείο)
αναβάλλω tarWriter. Κλείσε()
}

ο Δημιουργώ λειτουργία του os Το πακέτο δημιουργεί ένα νέο αρχείο tar. ο πίσσα. NewWriter συνάρτηση παίρνει σε ένα αρχείο και δημιουργεί ένα νέο αρχείο.

Μπορείτε να προσθέσετε αρχεία στο αρχείο tar με το WriteHeader και Γράφω λειτουργίες. Η συνάρτηση WriteHeader παίρνει ένα πίσσα. Επί κεφαλής struct ως επιχείρημα. Αυτό περιέχει τα μεταδεδομένα του αρχείου, όπως το όνομα του αρχείου, το μέγεθος και τα bit άδειας. Η συνάρτηση Write εγγράφει τα περιεχόμενα ενός αρχείου στο αρχείο.

εισαγωγή (
"αρχείο/πίσσα"
"fmt"
"io"
"κούτσουρο"
"os"
)

funcκύριος() {
// Δημιουργία νέου αρχείου
αρχείο, _ := os. Δημιουργώ("myarchive.tar")
αρχείο, _ = os. Δημιουργώ("message.txt")
αναβάλλω αρχείο. Κλείσε()

// Δημιουργία νέου αρχείου tar
tarWriter := tar. NewWriter (αρχείο)
αναβάλλω tarWriter. Κλείσε()

// Προσθήκη αρχείου στο αρχείο
fileToAdd, _ := os. Ανοιξε("file1.txt")
αναβάλλω αρχείοΠροσθήκη. Κλείσε()
fileInfo, _ := fileToAdd. Stat()
κεφαλίδα, _ := πίσσα. FileInfoHeader (FileInfo, "")
tarWriter. WriteHeader (κεφαλίδα)
_, _ = ιο. Αντιγραφή (tarWriter, fileToAdd)
fmt. Println("Ολοκληρώθηκε η λειτουργία του αρχείου TAR")
}

Το πρόγραμμα δημιουργεί νέα αρχεία tar και κειμένου με το Δημιουργώ λειτουργία του os πακέτο και ένα νέο αρχείο πίσσας με το NewWriter, πριν προσθέσετε το αρχείο στο αρχείο.

ο Ανοιξε λειτουργία ανοίγει το αρχείο για προσθήκη στο αρχείο. Σημειώστε ότι θα χρειαστείτε ένα αρχείο με όνομα file1.txt στον κατάλογο εργασίας σας για να εκτελέσετε αυτό το πρόγραμμα με επιτυχία.

Μπορείτε να χρησιμοποιήσετε το Στατ λειτουργία ενός στιγμιότυπου αρχείου για την ανάκτηση των μεταδεδομένων που θα χρειαστείτε για την κεφαλίδα tar. Περάστε το αποτέλεσμά του σε FileInfoHeader, μετά περάστε αυτό το αποτέλεσμα WriteHeader λειτουργία για να ρυθμίσετε το αρχείο tar. Τέλος, αντιγράψτε το αρχείο στο αρχείο χρησιμοποιώντας io. αντίγραφο.

Εξαγωγή αρχείων από τα αρχεία Tar

Μπορείτε να χρησιμοποιήσετε το NewReader λειτουργία για την ανάγνωση των περιεχομένων του αρχείου αρχειοθέτησης tar. Η συνάρτηση NewReader λαμβάνει ένα io. Αναγνώστης διεπαφή που μπορεί να είναι ένα αρχείο ή ένα buffer μνήμης. Επιστρέφει έναν δείκτη στο a πίσσα. Αναγνώστης struct.

εισαγωγή (
"αρχείο/πίσσα"
"io"
"os"
)

funcκύριος() {
// Ανοίξτε το αρχείο tar
αρχείο, _ := os. Ανοιξε("myarchive.tar")
αναβάλλω αρχείο. Κλείσε()

// Δημιουργία νέου προγράμματος ανάγνωσης πίσσας
tarReader := tar. NewReader (αρχείο)

// Επανάληψη πάνω από τα αρχεία στο αρχείο
Για {
header, err := tarReader. Επόμενο()

αν err == io. ΕΟΦ {
Διακοπή
}

// Εξαγωγή του αρχείου
outFile, _ := os. Δημιουργία (κεφαλίδα. Ονομα)
αναβάλλω outFile. Κλείσε()
_, _ = ιο. Αντιγραφή (outFile, tarReader)
}
}

ο άπειρο για βρόχο διασχίζει την παρουσία του αναγνώστη tar και εξάγει τα αρχεία αντιγράφοντας κάθε αρχείο με το io του πακέτου αντίγραφο λειτουργία.

Δημιουργία και προσθήκη αρχείων σε Zip Archives

Μπορείτε να δημιουργήσετε ένα νέο αρχείο zip με το NewWriter λειτουργία του φερμουάρ πακέτο. Η συνάρτηση NewWriter λαμβάνει ένα στιγμιότυπο αρχείου και επιστρέφει ένα πρόγραμμα εγγραφής zip.

εισαγωγή (
"αρχειοθήκη/zip"
"os"
)

funcκύριος() {
// Δημιουργία νέου αρχείου
αρχείο, err := os. Δημιουργώ("archive.zip")

αν λάθος!= μηδέν {
πανικός(πλανώμαι)
}

αναβάλλω αρχείο. Κλείσε()

// Δημιουργία νέου zip writer
zipWriter := zip. NewWriter (αρχείο)
αναβάλλω zipWriter. Κλείσε()
}

ο zipWriter μεταβλητή αποθηκεύει ένα νέο Συγγραφέας περίπτωση που επιστρέφει το NewWriter.

Μπορείτε να προσθέσετε αρχεία στα αρχεία zip σας με το Δημιουργώ λειτουργία του στιγμιότυπου Writer. Η συνάρτηση Δημιουργία παίρνει το όνομα του αρχείου. Μπορείτε επίσης να χρησιμοποιήσετε το Γράφω λειτουργία της παρουσίας του αρχείου zip για την εγγραφή δεδομένων σε αρχεία σε αρχεία zip.

εισαγωγή (
"αρχειοθήκη/zip"
"os"
)

funcκύριος() {
// Δημιουργία νέων αρχείων
αρχείο, err := os. Δημιουργώ("archive.zip")
αρχείο, err = os. Δημιουργώ("file1.txt")
αρχείο, err = os. Δημιουργώ("file2.txt")

αν λάθος!= μηδέν {
πανικός(πλανώμαι)
}

αναβάλλω αρχείο. Κλείσε()

// Δημιουργία νέου zip writer
zipWriter := zip. NewWriter (αρχείο)
αναβάλλω zipWriter. Κλείσε()

// Προσθήκη αρχείων στο αρχείο
file1, err := zipWriter. Δημιουργώ("file1.txt")

αν λάθος!= μηδέν {
πανικός(πλανώμαι)
}

file2, err := zipWriter. Δημιουργώ("file2.txt")

αν λάθος!= μηδέν {
πανικός(πλανώμαι)
}

// Γράψτε δεδομένα στα αρχεία στο αρχείο
file1.Write([]ψηφιόλεξη("Γειά σου Κόσμε!"))
file2.Write([]ψηφιόλεξη("Αντίο κόσμε!"))
fmt. Println("Ολοκληρώθηκε η λειτουργία αρχειοθέτησης zip")
}

Η κύρια λειτουργία ξεκινά με τη χρήση Δημιουργώ για να δημιουργήσετε ένα νέο αρχείο zip και δύο αρχεία κειμένου. Στη συνέχεια δημιουργεί δύο Writers για να προσθέσει τα δύο αρχεία κειμένου στο αρχείο. ο Γράφω Η λειτουργία κάθε παρουσίας αρχείου γράφει μηνύματα σε κάθε ένα από τα αρχεία στο αρχείο.

Εξαγωγή αρχείων από Zip Archives

Μπορείτε να εξαγάγετε ένα υπάρχον αρχείο zip διαβάζοντάς το με το OpenReader λειτουργία, στη συνέχεια πραγματοποιεί βρόχο στα περιεχόμενά του και αντιγράφοντας αρχεία με το io πακέτο.

εισαγωγή (
"αρχειοθήκη/zip"
"fmt"
"io"
"os"
)

funcκύριος() {
// Ανοίξτε το αρχείο
zipReader, err := zip. OpenReader("archive.zip")

αν λάθος!= μηδέν {
πανικός(πλανώμαι)
}

αναβάλλω zipReader. Κλείσε()

// Εξαγωγή αρχείων από το αρχείο
Για _, αρχείο := εύρος zipReader. Αρχείο {
zippedFile, err := αρχείο. Ανοιξε()

αν λάθος!= μηδέν {
πανικός(πλανώμαι)
}

αναβάλλω zippedFile. Κλείσε()

// Δημιουργήστε ένα νέο αρχείο με το ίδιο όνομα με το συμπιεσμένο αρχείο
extractedFile, err := os. Δημιουργία (αρχείο. Ονομα)

αν λάθος!= μηδέν {
πανικός(πλανώμαι)
}

αναβάλλω εξαγόμενο Αρχείο. Κλείσε()

// Αντιγράψτε τα δεδομένα από το συμπιεσμένο αρχείο στο νέο αρχείο
_, err = io. Αντιγραφή (extractedFile, zippedFile)

αν λάθος!= μηδέν {
πανικός(πλανώμαι)
}

fmt. Printf("Εξαγωγή %s\n", αρχείο. Ονομα)
}
}

ο OpenReader η λειτουργία διαβάζει τα αρχεία zip. ο OpenReader Η συνάρτηση δέχεται το όνομα του αρχείου zip ως όρισμα και επιστρέφει μια παρουσία ανάγνωσης αρχείου zip. ο για εμβέλεια Ο βρόχος διασχίζει τα περιεχόμενα των αρχείων στην παρουσία του αναγνώστη. Δημιουργεί ένα νέο αρχείο με το ίδιο όνομα με το αρχικό αρχείο και αντιγράφει τα περιεχόμενα του εξαγόμενου αρχείου στο νέο αρχείο χρησιμοποιώντας το io. αντίγραφο λειτουργία.

Αποσυμπίεση χειροκίνητα ή μέσω προγραμματισμού—Εξαρτάται από εσάς

Η αποσυμπίεση αρχείων μέσω προγραμματισμού είναι βολική εάν έχετε πολλά αρχεία ή αρχεία για αποσυμπίεση. Μπορεί επίσης να ενσωματώνετε τη λειτουργία αρχειοθέτησης στην κύρια εφαρμογή σας.

Σε άλλες περιπτώσεις, μπορεί να είναι καλύτερα να χρησιμοποιείτε υπάρχουσες εφαρμογές. Μπορείτε να χρησιμοποιήσετε ενσωματωμένες εφαρμογές ή εφαρμογές τρίτων για να αποσυμπιέσετε τα αρχεία σε Windows, macOS και Linux.