Ως γλώσσα προγραμματισμού, η Go διαθέτει ένα ευρύ φάσμα ενσωματωμένων λειτουργιών, συμπεριλαμβανομένης της δυνατότητας δημιουργίας, ανάγνωσης και εγγραφής αρχείων όπως αρχεία κειμένου (.txt).
Τα αρχεία είναι σημαντικά συστατικά της καθημερινής μας ζωής στον σύγχρονο κόσμο. Τα αρχεία κειμένου είναι χρήσιμα για την αποθήκευση δομημένων δεδομένων αναγνώσιμων από τον άνθρωπο χωρίς τη χρήση εξωτερικού λογισμικού ή βάσεων δεδομένων.
Αν αναρωτιέστε πώς θα μπορούσατε να αρχίσετε να χειρίζεστε αρχεία κειμένου στο Go, αυτό το άρθρο είναι το κατάλληλο μέρος για εσάς.
Το πακέτο bufio in Go
ο bufio Το πακέτο, το οποίο αποτελεί μέρος της τυπικής βιβλιοθήκης του Go, χρησιμοποιείται για λειτουργίες εισόδου και εξόδου σε buffer, εξ ου και το όνομα. ο bufio πακέτο βασίζεται στο io. Αναγνώστης και io. Συγγραφέας διεπαφές, οι οποίες χρησιμοποιούνται εκτενώς στην υλοποίηση της πλειοψηφίας των τυπικών πακέτων της Go.
ο bufio Το πακέτο προχωρά ένα βήμα παραπέρα εφαρμόζοντας buffering, καθιστώντας το χρήσιμο για λειτουργίες IO που περιλαμβάνουν δεδομένα κειμένου.
Για να χρησιμοποιήσετε το bufio πακέτο στο πρόγραμμά σας, θα πρέπει να το εισαγάγετε μαζί με άλλα πακέτα.
εισαγωγή (
"fmt"
"bufio"
)
Πιθανότατα ακούσατε όταν ξεκίνησε με το Go ότι έρχεται με όλα όσα θα μπορούσατε ενδεχομένως να χρειαστείτε ως προγραμματιστής. Για άμεση επικοινωνία με το λειτουργικό σας σύστημα, υπάρχει ένα πακέτο που ονομάζεται os που παρέχει λειτουργίες ανεξάρτητες από πλατφόρμα.
ο os και bufio Τα πακέτα κάνουν τον χειρισμό αρχείων κειμένου απίστευτα απλό.
Αν και η συντριπτική πλειοψηφία των os Οι λειτουργίες του πακέτου είναι τύπου Unix, όλες χρησιμοποιούν το στυλ χειρισμού σφαλμάτων Go, το οποίο καθιστά εύκολη την ανάγνωση μηνυμάτων σφάλματος και τον κώδικα εντοπισμού σφαλμάτων.
Λοιπόν, πώς χειρίζεστε αρχεία που περιέχουν κείμενο στο Go;
Πώς να διαβάσετε δεδομένα από ένα αρχείο κειμένου
Για να διαβάσετε δεδομένα από αρχεία κειμένου, πρέπει να καλέσετε το os του πακέτου Ανοιξε() συνάρτηση, η οποία δέχεται το όνομα του προς ανάγνωση αρχείου ως παράμετρο. Μια άλλη μέθοδος για να λάβετε το αρχείο είναι χρησιμοποιώντας το Ανοιγμα αρχείου() λειτουργία.
Η κύρια διαφορά μεταξύ Ανοιξε() και Ανοιγμα αρχείου() βρίσκεται στην εφαρμογή τους. Ανοιξε() ανοίγει ένα αρχείο σε λειτουργία μόνο για ανάγνωση (με το O_RDONLY σημαία), ενώ Ανοιγμα αρχείου() δίνει μεγαλύτερη ευελιξία αποδεχόμενοι τρεις παραμέτρους και συγκεκριμένα:
- Ονομα αρχείου
- Λειτουργία ανοιχτού αρχείου: Οι έγκυρες λειτουργίες ανοίγματος αρχείων φαίνονται στον παρακάτω πίνακα.
Σημαία Εννοια O_RDONLY Ανοίγει το αρχείο σε λειτουργία μόνο για ανάγνωση O_WRONLY Ανοίγει το αρχείο σε λειτουργία μόνο εγγραφής O_RDWR Ανοίγει το αρχείο σε λειτουργία ανάγνωσης-εγγραφής O_APPEND Προσθέτει δεδομένα στο αρχείο κατά τη σύνταξη O_CREATE Δημιουργεί ένα νέο αρχείο εάν δεν υπάρχει O_EXCL Χρησιμοποιείται με το O_CREATE, για να υποδείξει ότι το αρχείο πρέπει να δημιουργηθεί μόνο εάν δεν υπάρχει O_SYNC Ανοίγει το αρχείο για σύγχρονη I/O O_TRUNC Περικόψτε το αρχείο στο ανοιχτό, αν είναι δυνατόν - Δικαιώματα αρχείου: Ίδια με το bit άδειας αρχείων στο Linux χρησιμοποιείται για τον καθορισμό κανόνων πρόσβασης αρχείων, π.χ. 0777 για την παραχώρηση αδειών ανάγνωσης, εγγραφής και εκτέλεσης σε όλους τους τύπους χρηστών.
Ο παρακάτω κώδικας δείχνει πώς να διαβάζετε δεδομένα από ένα αρχείο κειμένου στο Go χρησιμοποιώντας os. Ανοιξε(), και Σάρωση() που σε αυτή την περίπτωση, τρέχει σε α Πηγαίνετε για βρόχο.
πακέτο κύριος
εισαγωγή (
"bufio"
"fmt"
"κούτσουρο"
"os"
)
/**
ΠΕΡΙΕΧΟΜΕΝΟ ΤΗΣ "testfile.txt" αρχείο.
lorem ipsum dolor sit amet
LOREM IPSUM DOLOR SIT AMET
Lorem ipsum dolor sit amet
Lorem Ipsum Dolor Sit Amet
lOREM iPSUM dOLOR sIT aMET
LoReM IpSuM DoLoR SiT AmEt
*/
func κύριος(){
αρχείο, err := os. Ανοιξε("testfile.txt")
// άλλη μέθοδο που χρησιμοποιεί os. Ανοιγμα αρχείου()
// αρχείο, err = os. Ανοιγμα αρχείου("testfile.txt", os. O_RDONLY, 0644)
αν λάθος != μηδέν {
κούτσουρο.Μοιραίος(πλανώμαι)
}
αναβάλλωαρχείο.Κλείσε()
fmt. Println("Το αρχείο άνοιξε με επιτυχία. Τώρα διαβάζουμε τα περιεχόμενα του αρχείου γραμμή προς γραμμή:")
// δημιουργώ ερευνητής από ο αρχείοπρος τηνανάγνωσηκείμενοαπό
σαρωτής := bufio. NewScanner (αρχείο)
// σάρωση ή ανάγνωση των byte του κειμένου γραμμή προς γραμμή
Γιαερευνητής.Σάρωση() {
fmt.Εκτύπωση(ερευνητής.Κείμενο())
}
αν εσφαλμένα := σαρωτής. Πλανώμαι(); λάθος != μηδέν {
κούτσουρο.Μοιραίος(πλανώμαι)
}
}
Όταν εκτελείτε τον παραπάνω κώδικα με τρέξτε το filename.go, παράγει την έξοδο που φαίνεται παρακάτω:
Εάν περάσετε μόνο το όνομα του αρχείου και όχι τη διαδρομή προς το Ανοιξε() ή Ανοιγμα αρχείου() λειτουργία για λειτουργίες ανάγνωσης, το Go υποθέτει ότι το αρχείο βρίσκεται στον παρόντα κατάλογο και επιστρέφει ένα σφάλμα εάν δεν το βρει. Θα πρέπει να περάσετε στη διαδρομή προς το αρχείο εάν πρέπει να εργαστείτε με αρχεία εκτός του τρέχοντος καταλόγου.
Πώς να γράψετε δεδομένα σε ένα αρχείο κειμένου
ο bufio Το πακέτο παρέχει μια προσωρινή μνήμη Συγγραφέας διεπαφή που αποθηκεύει byte δεδομένων και τα εγγράφει σε ένα αρχείο με τη βοήθεια του a Ξεπλύνετε() λειτουργία.
Το επόμενο δείγμα κώδικα είναι η συνέχεια αυτού για την ανάγνωση ενός αρχείου. Σε αυτό το παράδειγμα, τα δεδομένα εγγράφονται στο υπάρχον testfile.txt χρησιμοποιώντας την O_WRONLY και O_APPEND σημαίες.
Προσθέστε τις ακόλουθες γραμμές κώδικα στο παραπάνω πρόγραμμα, πριν από το κλείσιμο σγουρό στήριγμα του κύριος() λειτουργία:
// εγγραφή δεδομένων εξόδου στο αρχείο
αρχείο, err = os. OpenFile("testfile.txt", os. O_APPEND|os. O_WRONLY, 0644)
αν λάθος!= μηδέν {
κούτσουρο. Μοιραία (λάθος)
}
αναβάλλω αρχείο. Κλείσε()
fmt. Println("Το αρχείο άνοιξε με επιτυχία, τώρα ετοιμάζεται να εγγράψει δεδομένα στο αρχείο...")
// δημιουργία αντικειμένου Writer σε προσωρινή μνήμη για εγγραφή δεδομένων σε αρχείο
textWriter := bufio. NewWriter (αρχείο)
// γράψτε τη συμβολοσειρά στην προσωρινή μνήμη πριν από την αποθήκευση του αρχείου.
_, err = textWriter. WriteString("-Αυτό είναι ένα νέος κείμενο που προστέθηκε στο αρχείο.")
αν λάθος!= μηδέν {
κούτσουρο. Μοιραία (λάθος)
}
κείμενοΣυγγραφέας. Ξεπλύνετε()
fmt. Println ("Τα δεδομένα εγγράφηκαν στο αρχείο με επιτυχία...")
Η έξοδος του πλήρους προγράμματός σας θα πρέπει να μοιάζει με αυτό:
Όταν ανοίγετε το testfile.txt αρχείο, θα δείτε επίσης τη νέα γραμμή προσαρτημένη στο τέλος του αρχείου όπως ακριβώς στην παρακάτω εικόνα:
Ο χειρισμός αρχείων στο Go είναι εύκολος
Το Go σάς επιτρέπει να εργάζεστε με μια ποικιλία αρχείων, όχι μόνο με αρχεία κειμένου. Υπάρχουν πολλές πρόσθετες ενσωματωμένες βιβλιοθήκες και λειτουργίες για εργασία με διαφορετικούς τύπους δεδομένων από αρχεία, συμπεριλαμβανομένων των JSON και CSV.
Για να δείτε πώς συμπεριφέρονται διαφορετικά ανάλογα με την κατάσταση, μπορείτε να πειραματιστείτε με τις διάφορες σημαίες και τα δικαιώματα αρχείων που είναι διαθέσιμα για χρήση με Ανοιγμα αρχείου().