En guide till att arbeta med textfiler i Go

En guide till att arbeta med textfiler i Go

Som ett programmeringsspråk har Go ett brett utbud av inbyggda funktioner, inklusive möjligheten att skapa, läsa och skriva filer som textfiler (.txt).





Filer är viktiga komponenter i vårt dagliga liv i den moderna världen. Textfiler är användbara för att lagra strukturerad, läsbar data utan användning av extern programvara eller databaser.





MAKEUSE AV DAGENS VIDEO

Om du undrar hur du kan börja manipulera textfiler i Go är den här artikeln rätt plats för dig.





hur man ser vem som har tillgång till ett google doc

Bufio-paketet i Go

De bufio paket, som är en del av Gos standardbibliotek, används för buffrade in- och utdataoperationer, därav namnet. De bufio paketet bygger på io.Reader och io. Writer gränssnitt, som används flitigt i implementeringen av majoriteten av Gos standardpaket.

De bufio paketet går ett steg längre genom att implementera buffring, vilket gör det användbart för IO-operationer som involverar textdata.



Att använda bufio paket i ditt program, bör du importera det tillsammans med andra paket.

import ( 
"fmt"
"bufio"
)

Du hörde säkert när du kom igång med Go att den kommer med allt du kan tänkas behöva som programmerare. För direkt kommunikation med ditt operativsystem finns ett paket som heter du som ger plattformsoberoende funktioner.





De du och bufio paket gör textfilmanipulering otroligt enkel.

Även om den stora majoriteten av du paketets funktioner är Unix-liknande, de använder alla Go-stilen för felhantering, vilket gör det enkelt att läsa felmeddelanden och felsöka kod.





Så, hur manipulerar du filer som innehåller text i Go?

Hur man läser data från en textfil

För att läsa data från textfiler måste du ringa till du paketets Öppna() funktion, som accepterar namnet på filen som ska läsas som en parameter. En annan metod för att få filen är att använda Öppna fil() fungera.

Den stora skillnaden mellan Öppna() och Öppna fil() är i deras genomförande. Öppna() öppnar en fil i skrivskyddat läge (med O_RDONLY flagga), medan Öppna fil() ger mer flexibilitet genom att acceptera tre parametrar nämligen:

ska jag starta en youtube kanal
  • Filnamn
  • Filöppningsläge: De giltiga filöppningslägena visas i tabellen nedan.
    Flagga Menande
    O_RDONLY Öppnar filen i skrivskyddat läge
    O_FULLT Öppnar filen i skrivskyddat läge
    O_RDWR Öppnar filen i läs-skrivläge
    O_APPEND Lägger till data till filen när du skriver
    O_SKAPA Skapar en ny fil om ingen finns
    O_EXCL Används med O_CREATE, för att indikera att filen bara ska skapas om den inte finns
    O_SYNC Öppnar fil för synkron I/O
    O_TRUNC Trunkera filen på öppen, om möjligt
  • Filbehörigheter: Samma som filbehörighetsbitar i Linux används för att ange regler för filåtkomst, t.ex. 0777 för att ge läs-, skriv- och exekveringsbehörigheter till alla användartyper.

Koden nedan visar hur man läser data från en textfil i Go med hjälp av os.Open() , och Skanna() som i detta fall löper i en Gå för loop .

package main 
import (
"bufio"
"fmt"
"log"
"os"
)
/**
CONTENT OF THE "testfile.txt" file.
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 main() {
file, err := os.Open("testfile.txt")
// another method using os.OpenFile()
// file, err = os.OpenFile("testfile.txt", os.O_RDONLY, 0644)
if err != nil {
log.Fatal(err)
}
defer file.()
fmt.Println("File opened successfully. Now reading file contents line by line:")
// create scanner from the file to read text from
scanner := bufio.NewScanner(file)
// scan or read the bytes of text line by line
for scanner.Scan() {
fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}
}

När du kör koden ovan med kör filnamn.go , producerar den utdata som visas nedan:

  Utmatning av program för att läsa text från fil