TUTORIAL GO – LETTURA E SCRITTURA DEI FILE

Dopo aver visto le caratteristiche di Go cominciamo a vedere alcuni casi d’uso tipici dello sviluppo. Iniziamo con la lettura e la scrittura dei file.

Come si può vedere ho introdotto nuovi package: os, io/ioutil e bufio. os è il package che offre i metodi per la creazione e cancellazione dei file, ioutil offre funzioni per la manipolazione del file e bufio offre metodi bufferizzati per la lettura e scrittura

Nell’esempio in sequenza creo il file, lo popolo, ne leggo il contenuto e poi lo rimuovo dal file system.

nuovofile, errore := os.Create(“miofile.txt”) crea un file di nome miofile.txt nella directory dove eseguo il file .go. Il metodo Create restituisce 2 variabili, la prima di tipo file e la seconda di tipo Error che sarà valorizzato con il messaggio di errore se l’operazione non è possibile. Successivamente per popolare il file uso il metodo writestring della classe File e aggiungo ulteriore testo utilizzando un Writer offerto dal package bufio. Il writer bufferizzato migliora le prestazioni in caso di molte operazioni di scrittura e le rende effettive con il metodo flush, Infine con il close rendo il file disponibile per altre manipolazioni.

nuovofile, errore = os.Open(“miofile.txt”) apre il file con il nome passato come parametro e lo cerca nella directory dove il file go viene lanciato. Restituisce un oggetto di tipo file e l’eventuale errore. La lettura del contenuto può essere fatta in vari modi. La funzione Read legge il contenuto e lo salva in uno slice, restituendo in uscita il numero di caratteri letti. La funzione Seek consente di spostare il punto di inizio di lettura del file. Anche per la lettura il bufio ci mette a disposizione il reader che consente di effettuare le letture sfruttando il buffer in memoria. Il package ioutil mette a disposizione delle funzioni che agevolano l’operazione di lettura, es. txt, errore := ioutil.ReadFile(nuovofile.Name()), restituisce il contenuto del file in una variabile di tipo []byte.

Infine per cancellare il file il package io mette a disposizione la funzione Remove che riceve in ingresso il nome del file.