Du vil ha de grunnleggende ferdighetene til å lese filinnhold ved hjelp av Go -programmeringsspråket innen slutten av denne artikkelen.
Åpen fil for lesing
Den første metoden når du leser en fil åpner den. For å åpne en fil i Go, kan vi bruke Open () eller OpenFile () -metodene fra OS -pakken.
For enkelhets skyld vil vi holde oss til den åpne () -metoden.
Koden nedenfor viser syntaks for å åpne en fil ved hjelp av OS -pakken:
Fil, feil: = OS.Åpen ("Filnavn")
For eksempel å åpne en fil som heter “Hallo.txt ”I den nåværende arbeidskatalogen kan vi gjøre:
Fil, feil: = OS.Åpne ("Hei.tekst")
Det er også bra å lukke filen etter å ha fullført den nødvendige driften. Vi kan lukke filen ved å bruke den nære metoden som:
utsett fil.Lukk()
Forsikre deg om at enhver operasjon du utfører på filen er lokalisert under Open () og Close () -metoden.
Golang Les fil.
Vi kan bruke forskjellige metoder og teknikker for å lese en fil i Go. La oss diskutere noen vanlige og mest effektive.
Les hele filen.
Den vanligste og forenklede metoden for å lese filer er å bruke ReadFile -metoden fra Ioutil -pakken. Denne metoden vil lese hele filen og lagre den som en stor streng.
Til tross for sin forenklede natur, er denne metoden ikke veldig effektiv når det gjelder å jobbe med store filer.
La oss bruke et eksempel for å illustrere å jobbe med ReadFile () -metoden.
Begynn med å lage en fil som heter “Hallo.txt ”i din nåværende arbeidskatalog.
$ Touch Hei.tekst
Deretter redigerer du filen med tekstredigereren din og legger til følgende:
$ vim hei.tekst
> Hei fra hei.tekst
Lukk og lagre filen.
Nå kan vi bruke ReadFile () -metoden for å lese innholdet i hele filen som:
pakkehoved
import (
"FMT"
"io/ioutil"
"Logg"
)
func main ()
Data, feil: = ioutil.ReadFile ("Hei.tekst")
Hvis feil != nil
Logg.Fatal (feil)
fmt.Println (streng (data))
Programmet over vil lese filen og skrive ut innholdet til konsollen. Merk at vi må konvertere dataene til en streng før vi skriver ut dem. Ellers vil du få en del av tegn.
Les fil av biter
En annen måte å lese en fil i Go er å lese den i biter. Dette betyr at vi ikke laster hele innholdet i minnet, men i stedet hugger av små seksjoner.
Dette kan være en veldig god teknikk når du jobber med store filer.
For eksempel:
pakkehoved
import (
"Bufio"
"FMT"
"io"
"Logg"
"OS"
)
func main ()
Fil, feil: = OS.Åpne ("Hei.tekst")
Hvis feil != nil
Logg.Fatal (feil)
utsett fil.Lukk()
Leser: = Bufio.NewReader (fil)
buffer: = make ([] byte, 8)
for
Les, feil: = leser.Les (buffer)
Hvis feil != nil
Hvis feil != io.Eof
Logg.Fatal (feil)
gå i stykker
fmt.Println (streng (buffer [: les]))
I eksemplet over leste vi filen i biter av 8 byte. Vi leser dataene i bufferen ved hjelp av lesemetoden ved hjelp av en for en loop. Til slutt skriver vi ut arraybufferen ved hjelp av println () -metoden.
De resulterende biter av data som er lest er som vist:
$ gå løp
Hei fr
om h
Ello.tekst
fil
Les fillinje for linje
Vi kan også lese Files Line for linje ved hjelp av BUFIO -pakken. Et eksempel er som vist nedenfor:
pakkehoved
import (
"Bufio"
"FMT"
"Logg"
"OS"
)
func main ()
Fil, feil: = OS.Åpne ("Hei.tekst")
Hvis feil != nil
Logg.Fatal (feil)
utsett fil.Lukk()
Skanner: = Bufio.Newscanner (fil)
for skanner.Skann ()
fmt.Println (skanner.Tekst())
Hvis feil: = skanner.Feil (); feil != nil
Logg.Fatal (feil)
Skanneren vil skanne linjen og skrive ut en ny linje når som helst den møter \ n -karakteren.
Les filord for ord
Vi kan også bruke skanneordmetoden fra Bufio -pakken for å lese filordet etter ord. Et eksempelkode er som vist:
pakkehoved
import (
"Bufio"
"FMT"
"Logg"
"OS"
)
func main ()
Fil, feil: = OS.Åpne ("Hei.tekst")
Hvis feil != nil
Logg.Fatal (feil)
utsett fil.Lukk()
Skanner: = Bufio.Newscanner (fil)
skanner.Split (Bufio.Skanneord)
for skanner.Skann ()
fmt.Println (skanner.Tekst())
Hvis feil: = skanner.Feil (); feil != nil
Logg.Fatal (feil)
I eksemplet over skanner vi filordet ved å bruke skanordene levert av BUFIO -pakken.
Den resulterende utgangen er som:
Hallo
fra
de
Hallo.tekst
fil
Konklusjon
Denne guiden diskuterer vanlige metoder og teknikker for å lese filer i Go -programmeringsspråket.
Fortsett koding!!