Una guia per treballar amb fitxers de text a Go

Una guia per treballar amb fitxers de text a Go

Com a llenguatge de programació, Go té una àmplia gamma de funcions integrades, inclosa la possibilitat de crear, llegir i escriure fitxers com fitxers de text (.txt).





Els fitxers són components importants de la nostra vida quotidiana al món modern. Els fitxers de text són útils per emmagatzemar dades estructurades llegibles per l'home sense l'ús de programari o bases de dades externes.





MAKEUSEO VÍDEO DEL DIA

Si us pregunteu com podeu començar a manipular fitxers de text a Go, aquest article és el lloc adequat per a vosaltres.





El paquet bufio a Go

El bufo package, que és una part de la biblioteca estàndard de Go, s'utilitza per a operacions d'entrada i sortida de buffer, d'aquí el nom. El bufo paquet es basa en el io.Reader i io.Escriptor interfícies, que s'utilitzen àmpliament en la implementació de la majoria dels paquets estàndard de Go.

El bufo El paquet fa un pas més enllà mitjançant la implementació de la memòria intermèdia, cosa que el fa útil per a les operacions d'IO que impliquen dades textuals.



Per utilitzar el bufo paquet al vostre programa, hauríeu d'importar-lo juntament amb altres paquets.

import ( 
"fmt"
"bufio"
)

Segurament ho heu sentit quan va començar amb Go que ve amb tot el que puguis necessitar com a programador. Per a la comunicació directa amb el vostre sistema operatiu, hi ha un paquet anomenat vostè que ofereix funcions independents de la plataforma.





Windows 10 system_service_exception

El vostè i bufo Els paquets fan que la manipulació de fitxers de text sigui increïblement senzilla.

Tot i que la gran majoria dels vostè Les funcions del paquet són semblants a Unix, totes utilitzen l'estil Go de gestió d'errors, que facilita la lectura dels missatges d'error i el codi de depuració.





Aleshores, com manipuleu els fitxers que contenen text a Go?

Com llegir dades d'un fitxer de text

Per llegir dades dels fitxers de text, heu de trucar al vostè paquets Obre() funció, que accepta el nom del fitxer a llegir com a paràmetre. Un altre mètode per obtenir el fitxer és utilitzar el fitxer Arxiu obert() funció.

La principal diferència entre Obre() i Arxiu obert() està en la seva implementació. Obre() obre un fitxer en mode només de lectura (amb el fitxer O_RDONLY bandera), mentre Arxiu obert() dóna més flexibilitat en acceptar tres paràmetres, a saber:

  • Nom de l'arxiu
  • Mode d'obertura de fitxers: els modes d'obertura de fitxers vàlids es mostren a la taula següent.
    Bandera Significat
    O_RDONLY Obre el fitxer en mode només de lectura
    O_NEWRONLY Obre el fitxer en mode només d'escriptura
    O_RDWR Obre el fitxer en mode de lectura-escriptura
    O_APPEND Afegeix dades al fitxer en escriure
    O_CREAR Crea un fitxer nou si no n'hi ha cap
    O_EXCL S'utilitza amb O_CREATE, per indicar que el fitxer només s'ha de crear si no existeix
    O_SYNC Obre el fitxer per a E/S síncrones
    O_TRUNC Trunqueu el fitxer a l'obertura, si és possible
  • Permisos de fitxer: Igual que el bits de permís de fitxer a Linux s'utilitza per especificar regles d'accés a fitxers, per exemple, 0777 per concedir permisos de lectura, escriptura i execució a tots els tipus d'usuari.

El codi següent mostra com llegir dades d'un fitxer de text amb Go os.Open() , i Escaneja () que en aquest cas, s'executa en a Anar per bucle .

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)
}
}

Quan executeu el codi anterior amb aneu a executar filename.go , produeix la sortida que es mostra a continuació:

  Sortida del programa per llegir text del fitxer