Una guida per lavorare con i file di testo in Go

Una guida per lavorare con i file di testo in Go

Come linguaggio di programmazione, Go ha un'ampia gamma di funzionalità integrate, inclusa la possibilità di creare, leggere e scrivere file come file di testo (.txt).





cosa significa rng nei videogiochi

I file sono componenti importanti della nostra vita quotidiana nel mondo moderno. I file di testo sono utili per archiviare dati strutturati leggibili dall'uomo senza l'uso di software o database esterni.





FARE USO DEL VIDEO DEL GIORNO

Se ti stai chiedendo come iniziare a manipolare file di testo in Go, questo articolo è il posto giusto per te.





Il pacchetto bufio in Go

Il bufio pacchetto, che fa parte della libreria standard di Go, viene utilizzato per operazioni di input e output nel buffer, da cui il nome. Il bufio pacchetto si basa su io.Reader e io.Scrittore interfacce, ampiamente utilizzate nell'implementazione della maggior parte dei pacchetti standard di Go.

Il bufio il pacchetto fa un ulteriore passo avanti implementando il buffering, rendendolo utile per le operazioni di I/O che coinvolgono dati testuali.



Per usare il bufio pacchetto nel tuo programma, dovresti importarlo insieme ad altri pacchetti.

import ( 
"fmt"
"bufio"
)

Probabilmente hai sentito quando tu iniziato con Go che viene fornito con tutto ciò di cui potresti aver bisogno come programmatore. Per la comunicazione diretta con il tuo sistema operativo, c'è un pacchetto chiamato voi che fornisce funzioni indipendenti dalla piattaforma.





Il voi e bufio i pacchetti rendono la manipolazione dei file di testo incredibilmente semplice.

Sebbene la stragrande maggioranza dei voi le funzioni del pacchetto sono simili a Unix, utilizzano tutte lo stile Go di gestione degli errori, che semplifica la lettura dei messaggi di errore e il codice di debug.





Quindi, come si manipolano i file contenenti testo in Go?

Come leggere i dati da un file di testo

Per leggere i dati dai file di testo, è necessario chiamare il voi pacchi Aprire() funzione, che accetta come parametro il nome del file da leggere. Un altro metodo per ottenere il file è utilizzare il file Apri il file() funzione.

tasto sinistro del mouse non funziona windows 10

La principale differenza tra Aprire() e Apri il file() è nella loro attuazione. Aprire() apre un file in modalità di sola lettura (con l'estensione O_RDONLY bandiera), mentre Apri il file() offre maggiore flessibilità accettando tre parametri, vale a dire:

  • Nome del file
  • Modalità di apertura file: le modalità di apertura file valide sono mostrate nella tabella seguente.
    Bandiera Significato
    O_RDONLY Apre il file in modalità di sola lettura
    O_SBAGLIATO Apre il file in modalità di sola scrittura
    O_RDWR Apre il file in modalità lettura-scrittura
    O_APPEND Aggiunge i dati al file durante la scrittura
    O_CREA Crea un nuovo file se non ne esiste uno
    O_EXCL Usato con O_CREATE, per indicare che il file deve essere creato solo se non esiste
    O_SINC Apre il file per l'I/O sincrono
    O_TRUNC Tronca il file all'apertura, se possibile
  • Autorizzazioni file: come il bit di autorizzazione file in Linux utilizzato per specificare le regole di accesso ai file, ad esempio 0777 per concedere autorizzazioni di lettura, scrittura ed esecuzione a tutti i tipi di utenti.

Il codice seguente mostra come leggere i dati da un file di testo in Go using os.Apri() , e Scansione() che in questo caso scorre in a Vai per il ciclo .

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

Quando esegui il codice sopra con vai a eseguire filename.go , produce l'output mostrato di seguito:

  Output del programma per leggere il testo da file