Elencare i file contenuti in una directory è un'operazione molto comune. In questo articolo vedremo come ottenere l'elenco dei file di una directory con Go.
Go ci consente di effettuare questa operazione tramite il package os che dispone della funzione Readdir() ottenibile tramite l'handle della directory aperta in lettura.
Otteniamo così una slice degli elementi contenuti nella directory. Ciascun oggetto possiede le funzioni per stabilire se stiamo elaborando un file o una directory e per ottenere il nome del file corrente dal filesystem.
package main
import (
"fmt"
"os"
)
func listFiles(dir string) ([]string, error) {
listing := []string{}
f, err := os.Open(dir)
if err != nil {
return listing, err
}
files, err := f.Readdir(0)
if err != nil {
return listing, err
}
for _, file := range files {
if !file.IsDir() {
fName := file.Name()
listing = append(listing, fName)
}
}
return listing, nil
}
func main() {
files, err := listFiles('./test');
if err != nil {
panic(err)
}
fmt.Println(files)
}
La funzione listFiles assume come parametro il percorso della directory e restituisce una slice contenente i nomi dei file e un eventuale errore se la directory non è accessibile in lettura.