Programmeerimiskeelena on Go'l lai valik sisseehitatud funktsioone, sealhulgas võimalus luua, lugeda ja kirjutada faile, näiteks tekstifaile (.txt).
Failid on tänapäeva maailmas meie igapäevaelu olulised komponendid. Tekstifailid on kasulikud struktureeritud inimloetavate andmete salvestamiseks ilma välist tarkvara või andmebaase kasutamata.
Kui soovite teada, kuidas saaksite Go's tekstifailidega manipuleerida, on see artikkel teie jaoks õige koht.
Bufio pakett Go-s
The bufio paketti, mis on osa Go standardteegist, kasutatakse puhverdatud sisend- ja väljundoperatsioonide jaoks, sellest ka nimi. The bufio pakett põhineb io. Lugeja ja io. Kirjanik liidesed, mida kasutatakse laialdaselt enamiku Go standardpakettide juurutamisel.
The bufio pakett läheb sammu võrra kaugemale, rakendades puhverdamist, muutes selle kasulikuks tekstiandmetega seotud IO-toimingute jaoks.
Et kasutada bufio paketti oma programmis, peaksite selle importima koos teiste pakettidega.
importida (
"fmt"
"bufio"
)
Tõenäoliselt kuulsite, kui
alustasin Go-ga et sellega on kaasas kõik, mida programmeerijana vaja võib minna. Operatsioonisüsteemiga otsesuhtluseks on pakett nimega os mis pakub platvormist sõltumatuid funktsioone.The os ja bufio paketid muudavad tekstifailidega manipuleerimise uskumatult lihtsaks.
Kuigi valdav enamus os paketi funktsioonid on Unixi sarnased, need kõik kasutavad veakäsitluse Go stiili, mis muudab veateadete ja silumiskoodi lugemise lihtsaks.
Niisiis, kuidas manipuleerida Go's teksti sisaldavate failidega?
Kuidas lugeda andmeid tekstifailist
Tekstifailidest andmete lugemiseks peate helistama os pakendid Ava () funktsioon, mis aktsepteerib parameetrina loetava faili nime. Teine viis faili hankimiseks on kasutada Avatud fail() funktsiooni.
Peamine erinevus Ava () ja Avatud fail() on nende rakendamisel. Ava () avab faili kirjutuskaitstud režiimis (koos O_RDONLY lipp), samas Avatud fail() annab rohkem paindlikkust, aktsepteerides kolme parameetrit, nimelt:
- Faili nimi
- Faili avamise režiim: kehtivad faili avamise režiimid on näidatud allolevas tabelis.
Lipp Tähendus O_RDONLY Avab faili kirjutuskaitstud režiimis O_VALE Avab faili ainult kirjutamisrežiimis O_RDWR Avab faili lugemis-kirjutusrežiimis O_APPEND Lisab kirjutamisel failile andmed O_LOO Loob uue faili, kui seda pole O_EXCL Kasutatakse koos O_CREATE-ga, et näidata, et fail tuleks luua ainult siis, kui seda pole olemas O_SYNC Avab sünkroonse I/O faili O_TRUNC Kui võimalik, kärbige fail avatud kujul - Faili õigused: sama, mis faililubade bitid Linuxis kasutatakse failidele juurdepääsureeglite määramiseks, nt 0777, et anda lugemis-, kirjutamis- ja täitmisõigused kõikidele kasutajatüüpidele.
Allolev kood näitab, kuidas Go kasutades tekstifailist andmeid lugeda os. Ava (), ja Skanni () mis antud juhul jookseb a Mine loopi.
pakett peamine
importida (
"bufio"
"fmt"
"logi"
"os"
)
/**
SISU "testfail.txt" faili.
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 peamine(){
fail, err := os. Open("testfail.txt")
// teine meetod, mis kasutab os. Avatud fail()
// fail, err = os. Avatud fail("testfail.txt", os. O_RDONLY, 0644)
if err != nil {
logi.Tappev(eks)
}
edasi lükatafaili.Sulge()
fmt. Println("Fail avati edukalt. Nüüd loetakse faili sisu rida-realt:")
// luua skanner alates a failijuurdelugedatekstalates
skanner := bufio. NewScanner (fail)
// skannida või lugeda teksti baite ridade kaupa
jaoksskanner.Skaneeri() {
fmt.Println(skanner.Tekst())
}
kui viga := skanner. Err(); eksitus != null {
logi.Tappev(eks)
}
}
Kui käivitate ülaltoodud koodi käitage failinimi.go, annab see allpool näidatud väljundi:
Kui sisestate ainult faili nime, mitte tee Ava () või Avatud fail() funktsiooni lugemistoimingute jaoks, eeldab Go, et fail asub praeguses kataloogis ja tagastab veateate, kui seda ei leia. Peaksite edastama faili tee, kui peate töötama failidega väljaspool praegust kataloogi.
Kuidas kirjutada andmeid tekstifaili
The bufio pakett pakub puhverdatud Kirjanik liides, mis salvestab baite andmeid ja kirjutab need faili a abil Flush () funktsiooni.
Järgmine näidiskood on faili lugemise koodi jätk. Selles näites kirjutatakse andmed olemasolevasse testfail.txt kasutades O_VALE ja O_APPEND lipud.
Lisage ülaltoodud programmile järgmised koodiread, enne kui sulgub peamine () funktsioon:
// väljundandmete kirjutamine faili
fail, err = os. OpenFile("testfile.txt", os. O_APPEND|os. O_WRONLY, 0644)
kui eks!= null {
logi. Saatuslik (viga)
}
edasi lükata faili. Sulge()
fmt. Println("Fail avati edukalt, valmistub praegu andmete faili kirjutamiseks...")
// puhverdatud Writeri objekti loomine andmete faili kirjutamiseks
textWriter := bufio. NewWriter (fail)
// kirjutage string puhvrisse enne faili salvestamist.
_, err = tekstikirjutaja. WriteString("-See on a uus failile lisatud tekst.")
kui eks!= null {
logi. Saatuslik (viga)
}
tekstikirjutaja. Flush ()
fmt. Println("Andmed on faili edukalt kirjutatud...")
Teie täieliku programmi väljund peaks välja nägema järgmine:
Kui avate testfail.txt faili, näete ka faili lõppu lisatud uut rida, nagu alloleval pildil:
Failide käsitlemine Go-s on lihtne
Go võimaldab teil töötada mitmesuguste failidega, mitte ainult tekstifailidega. Erinevat tüüpi failide andmetega töötamiseks on palju täiendavaid sisseehitatud teeke ja funktsioone, sealhulgas JSON ja CSV.
Et näha, kuidas nad olenevalt olukorrast erinevalt käituvad, võite katsetada erinevate lippude ja failiõigustega, mis on kasutamiseks saadaval Avatud fail().