0Pricing
Go Academy · Lezione

Leggere file con os e bufio

Aprire file, leggere righe e chiuderli in sicurezza

Leggere file con os e bufio è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.

os.ReadFile

os.ReadFile (Go 1.16+) legge un intero file in uno slice di byte con una sola chiamata. È una soluzione semplice e idiomatica per i file piccoli.

data, err := os.ReadFile("config.json")
if err != nil { log.Fatal(err) }
fmt.Println(string(data))

os.Open e chiusura manuale

Per un controllo maggiore, apra un file con os.Open (in sola lettura) e lo chiuda con defer:

f, err := os.Open("data.txt")
if err != nil { return err }
defer f.Close()

Lettura in un buffer

Legga un blocco di byte con f.Read(buf). Il metodo restituisce il numero di byte letti e io.EOF quando il file termina.

buf := make([]byte, 1024)
n, err := f.Read(buf)
if err != nil && err != io.EOF { return err }
fmt.Println(string(buf[:n]))

bufio.NewReader

Avvolga un file in bufio.Reader per memorizzare i dati letti nel buffer e ridurre le system call. I metodi includono ReadString, ReadLine e ReadByte.

reader := bufio.NewReader(f)
line, err := reader.ReadString('\n')

Lettura riga per riga con bufio.Scanner

bufio.NewScanner è il modo idiomatico per leggere un file di testo riga per riga. La funzione di suddivisione predefinita è ScanLines.

scanner := bufio.NewScanner(f)
for scanner.Scan() {
    fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil { return err }

Buffer personalizzato dello scanner

Il buffer predefinito dello scanner è di 64 KiB. Per i file con righe molto lunghe, aumenti il buffer con scanner.Buffer.

buf := make([]byte, 1024*1024)
scanner.Buffer(buf, len(buf))

io.ReadAll

io.ReadAll legge da qualsiasi io.Reader fino a EOF e restituisce i byte. È utile per leggere connessioni di rete, response body o file avvolti in reader.

data, err := io.ReadAll(f)

Scansione di parole e byte

Sostituisca la funzione di suddivisione dello scanner per scansionare parole (bufio.ScanWords) o singoli byte (bufio.ScanBytes).

scanner.Split(bufio.ScanWords)
for scanner.Scan() {
    fmt.Println(scanner.Text())
}

Lettura di testo strutturato

Dopo aver letto le righe, utilizzi strings.Fields o strings.Split per analizzare le colonne:

for scanner.Scan() {
    fields := strings.Fields(scanner.Text())
    // fields[0], fields[1], ...
}

Errori nella lettura dei file

Controlli sempre Err() dello scanner dopo il ciclo di scansione: restituisce il primo errore diverso da EOF. Un ciclo che termina normalmente senza scansionare alcuna riga può comunque aver rilevato un errore.

Lettura di stdin con nome

Utilizzi os.Stdin ovunque sia accettato un io.Reader. In questo modo gli strumenti CLI funzionano sia con argomenti che indicano file sia con input tramite pipe.

scanner := bufio.NewScanner(os.Stdin)

Verifica rapida

Quale tipo di bufio è il modo idiomatico in Go per leggere un file di testo riga per riga?

Riepilogo: lettura dei file

Punti chiave:

  • os.ReadFile: legge un intero file piccolo con una sola chiamata
  • bufio.Scanner: lettura riga per riga; controlli Err() dopo il ciclo
  • bufio.Reader: letture tramite buffer che riducono le system call
  • io.ReadAll: legge completamente qualsiasi io.Reader

Domande Frequenti

La lezione «Leggere file con os e bufio» è gratuita?

Sì — il testo completo di «Leggere file con os e bufio» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.

Cosa imparerò in «Leggere file con os e bufio»?

Aprire file, leggere righe e chiuderli in sicurezza Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Go Academy?

Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Leggere file con os e bufio»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Go Academy?

Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Leggere file con os e bufio
  2. Scrivere file e file temporanei
  3. Codifica e decodifica JSON
  4. JSON e CSV in streaming
← Torna a Go Academy