Ako programovací jazyk má Go širokú škálu vstavaných funkcií vrátane schopnosti vytvárať, čítať a zapisovať súbory, ako sú textové (.txt) súbory.
Súbory sú dôležitou súčasťou nášho každodenného života v modernom svete. Textové súbory sú užitočné na ukladanie štruktúrovaných údajov čitateľných pre človeka bez použitia externého softvéru alebo databáz.
Ak vás zaujíma, ako by ste mohli začať manipulovať s textovými súbormi v Go, tento článok je pre vás tým správnym miestom.
Balík bufio v hre Go
The bufio balík, ktorý je súčasťou štandardnej knižnice Go, sa používa na operácie vstupu a výstupu s vyrovnávacou pamäťou, odtiaľ názov. The bufio balík stavia na io. Čitateľ a io. Spisovateľ rozhrania, ktoré sa vo veľkej miere používajú pri implementácii väčšiny štandardných balíkov Go.
The bufio Balík ide ešte o krok ďalej implementáciou vyrovnávacej pamäte, vďaka čomu je užitočný pre IO operácie zahŕňajúce textové dáta.
Ak chcete použiť bufio balík vo vašom programe, mali by ste ho importovať spolu s inými balíkmi.
importovať (
"fmt"
"bufio"
)
Pravdepodobne ste počuli, keď ste začal s Go že prichádza so všetkým, čo by ste ako programátor mohli potrebovať. Pre priamu komunikáciu s vaším operačným systémom existuje balík tzv os ktorý poskytuje funkcie nezávislé od platformy.
The os a bufio balíky neuveriteľne zjednodušujú manipuláciu s textovými súbormi.
Hoci prevažná väčšina os funkcie balíka sú podobné Unixu, všetky využívajú štýl spracovania chýb Go, ktorý uľahčuje čítanie chybových správ a ladenie kódu.
Ako teda manipulujete so súbormi obsahujúcimi text v Go?
Ako čítať údaje z textového súboru
Ak chcete čítať údaje z textových súborov, musíte zavolať na os balíka OTVORENÉ() funkcia, ktorá akceptuje názov súboru, ktorý sa má čítať ako parameter. Ďalším spôsobom, ako získať súbor, je použitie Otvorený súbor() funkciu.
Hlavný rozdiel medzi OTVORENÉ() a Otvorený súbor() je v ich realizácii. OTVORENÉ() otvorí súbor v režime len na čítanie (s príponou O_RDONLY vlajka), kým Otvorený súbor() poskytuje väčšiu flexibilitu akceptovaním troch parametrov, a to:
- Názov súboru
- Režim otvárania súboru: Platné režimy otvárania súborov sú uvedené v tabuľke nižšie.
Vlajka Význam O_RDONLY Otvorí súbor v režime len na čítanie O_WRONLY Otvorí súbor v režime len na zápis O_RDWR Otvorí súbor v režime čítania a zápisu O_APPEND Pri zápise pridáva údaje do súboru O_CREATE Vytvorí nový súbor, ak žiadny neexistuje O_EXCL Používa sa s O_CREATE na označenie, že súbor by sa mal vytvoriť iba vtedy, ak neexistuje O_SYNC Otvorí súbor pre synchrónne I/O O_TRUNC Ak je to možné, skráťte súbor pri otvorení - Povolenia súboru: Rovnaké ako bitov povolení súborov v systéme Linux používa sa na špecifikovanie pravidiel prístupu k súborom, napr. 0777 na udelenie povolení na čítanie, zápis a spúšťanie všetkým typom používateľov.
Nižšie uvedený kód ukazuje, ako čítať údaje z textového súboru v Go using os. OTVORENÉ(), a skenovať() ktorá v tomto prípade prebieha v a Choďte do slučky.
balík Hlavná
importovať (
"bufio"
"fmt"
"log"
"os"
)
/**
OBSAH "testfile.txt" súbor.
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 Hlavná(){
súbor, chyba := os. OTVORENÉ("testfile.txt")
// iná metóda pomocou os. Otvorený súbor()
// súbor, err = os. Otvorený súbor("testfile.txt", os. O_RDONLY, 0644)
if err != nula {
log.Osudné(chybovať)
}
odložiťsúbor.Zavrieť()
fmt. Println("Súbor bol úspešne otvorený. Teraz čítajte obsah súboru riadok po riadku:")
// vytvoriť skener od na súbordočítaťtextod
skener := bufio. NewScanner (súbor)
// skenovanie alebo čítanie bajtov textu riadok po riadku
preskener.Skenujte() {
fmt.Println(skener.Text())
}
if err := skener. Err(); chyba != nula {
log.Osudné(chybovať)
}
}
Keď spustíte kód uvedený vyššie pomocou choď spustiť filename.go, vytvára výstup uvedený nižšie:
Ak zadáte iba názov súboru a nie cestu k súboru OTVORENÉ() alebo Otvorený súbor() Funkcia Go pre operácie čítania predpokladá, že súbor je v aktuálnom adresári a ak ho nenájde, vráti chybu. Ak potrebujete pracovať so súbormi mimo aktuálneho adresára, mali by ste zadať cestu k súboru.
Ako zapisovať údaje do textového súboru
The bufio balík poskytuje vyrovnávaciu pamäť Spisovateľ rozhranie, ktoré ukladá bajty údajov a zapisuje ich do súboru pomocou a Spláchnuť() funkciu.
Ďalší vzorový kód je pokračovaním kódu na čítanie súboru. V tomto príklade sa údaje zapisujú do existujúcich testfile.txt pomocou O_WRONLY a O_APPEND vlajky.
Pridajte nasledujúce riadky kódu do programu vyššie pred záverečnú zloženú zátvorku Hlavná() funkcia:
// zápis výstupných údajov do súboru
súbor, chyba = os. OpenFile("testfile.txt", os. O_APPEND|os. O_WRONLY, 0644)
ak chyba!= nula {
log. fatálne (chyba)
}
odložiť súbor. Zavrieť()
fmt. Println("Súbor bol úspešne otvorený, teraz sa pripravuje zápis údajov do súboru...")
// vytvorenie objektu Writer s vyrovnávacou pamäťou na zapisovanie údajov do súboru
textWriter := bufio. NewWriter (súbor)
// zapíše reťazec do vyrovnávacej pamäte pred uložením súboru.
_, err = textWriter. WriteString("-Toto je a Nový text pridaný do súboru.").
ak chyba!= nula {
log. fatálne (chyba)
}
textWriter. Spláchnuť()
fmt. Println("Údaje boli úspešne zapísané do súboru...")
Výstup vášho kompletného programu by mal vyzerať takto:
Keď otvoríte testfile.txt súbor, tiež uvidíte nový riadok pripojený na koniec súboru, rovnako ako na obrázku nižšie:
Manipulácia so súbormi v Go je jednoduchá
Go vám umožňuje pracovať s rôznymi súbormi, nielen s textovými súbormi. Existuje mnoho ďalších vstavaných knižníc a funkcií na prácu s rôznymi typmi údajov zo súborov vrátane JSON a CSV.
Ak chcete zistiť, ako sa správajú odlišne v závislosti od situácie, môžete experimentovať s rôznymi príznakmi a povoleniami súborov, ktoré sú k dispozícii na použitie s Otvorený súbor().