Go で listFiles する方法 の改良版。
Java の場合こんなコード:
File file = new File("/path/to/targetdir");
File files[] = file.listFiles();
これに寄せた書き方で Golang で実装してみた。
package main
import (
"fmt"
"os"
)
type MyFile struct {
Name string
Dir bool
File bool
}
func listFiles(pathName string) (*[]MyFile, error) {
f, err := os.Open(pathName)
if err != nil {
return nil, err
}
defer f.Close()
myFiles := []MyFile{}
fileInfos, err := f.Readdir(0)
for _, fileInfo := range fileInfos {
dir := fileInfo.IsDir()
myFiles = append(myFiles, MyFile{Name: fileInfo.Name(), Dir: dir, File: !dir})
}
return &myFiles, nil
}
func main() {
pathName := "/path/to/targetdir"
files, err := listFiles(pathName)
if err == nil {
for _, file := range *files {
if file.File {
fmt.Println(fmt.Sprintf("- file) %s", file.Name))
} else if file.Dir {
fmt.Println(fmt.Sprintf("- dir) %s", file.Name))
}
}
}
}