0Pricing
Go Academy · Lezione

Scrivere file e file temporanei

WriteFile, flag di OpenFile e file temporanei

Scrivere file e file temporanei è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 2 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.WriteFile

os.WriteFile scrive uno slice di byte in un file in modo atomico (prima tronca il file, poi scrive). È una soluzione semplice per i file piccoli.

err := os.WriteFile("output.txt", []byte("hello"), 0644)
if err != nil { log.Fatal(err) }

os.Create e defer Close

os.Create crea o tronca un file e restituisce un *os.File. Lo chiuda sempre con defer.

f, err := os.Create("output.txt")
if err != nil { return err }
defer f.Close()
f.WriteString("hello\n")

os.OpenFile con flag

Utilizzi os.OpenFile per le modalità di aggiunta, creazione se il file non esiste o creazione esclusiva:

f, err := os.OpenFile("log.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)

bufio.Writer

Avvolga un file in bufio.NewWriter per raggruppare le piccole scritture in system call più grandi. Chiami Flush() prima della chiusura per scrivere i dati ancora nel buffer.

w := bufio.NewWriter(f)
fmt.Fprintf(w, "line %d\n", i)
w.Flush()

fmt.Fprintf

Scriva testo formattato in qualsiasi io.Writer, inclusi i file:

fmt.Fprintf(f, "name: %s, age: %d\n", name, age)

Schema per la scrittura atomica dei file

Scriva in un file temporaneo, quindi lo rinomini con il nome di destinazione. La ridenominazione è atomica su POSIX: i lettori vedono il file precedente o quello nuovo, mai una scrittura parziale.

tmp, _ := os.CreateTemp("", "output-*.txt")
tmp.Write(data)
tmp.Close()
os.Rename(tmp.Name(), "output.txt")

os.CreateTemp

os.CreateTemp(dir, pattern) crea un file temporaneo in dir con un nome univoco che corrisponde a pattern. Restituisce il file aperto. La sua eliminazione è responsabilità del chiamante.

f, err := os.CreateTemp("", "upload-*.json")
defer os.Remove(f.Name()) // cleanup

os.MkdirTemp

os.MkdirTemp crea una directory temporanea. La utilizzi per i fixture dei test o per pipeline di elaborazione che creano più file temporanei.

dir, err := os.MkdirTemp("", "batch-*")
defer os.RemoveAll(dir)

Permessi dei file

Passi i bit dei permessi Unix, ad esempio 0644 per lettura e scrittura del proprietario e sola lettura per gruppo e altri, come ultimo argomento alle funzioni di tipo Create. La umask del processo può limitarli ulteriormente.

Controllo degli errori di scrittura

f.WriteString e fmt.Fprintf possono restituire errori, ad esempio per disco pieno o permessi insufficienti. Controlli gli errori oppure li accumuli con un wrapper del writer che registra il primo errore.

sync.File non è sicuro per l'accesso concorrente

Più goroutine che scrivono contemporaneamente nello stesso *os.File possono intercalare le scritture. Utilizzi un mutex o una singola goroutine dedicata alla scrittura.

Verifica rapida

Perché lo schema che prevede la scrittura in un file temporaneo seguita dalla ridenominazione è considerato atomico?

Riepilogo: scrittura dei file

Punti chiave:

  • os.WriteFile: semplice sovrascrittura; bufio.Writer: raggruppa le piccole scritture
  • Scrittura atomica: file temporaneo e ridenominazione
  • os.CreateTemp e os.MkdirTemp per le risorse temporanee; inserisca sempre la pulizia in defer
  • Controlli gli errori di scrittura e sincronizzi le scritture concorrenti

Domande Frequenti

La lezione «Scrivere file e file temporanei» è gratuita?

Sì — il testo completo di «Scrivere file e file temporanei» è 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 «Scrivere file e file temporanei»?

WriteFile, flag di OpenFile e file temporanei 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 2 di 4.

Quanto tempo richiede la lezione «Scrivere file e file temporanei»?

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