Home About
Go

Go, listFiles 指定のディレクトリ内のファイルまたはディレクトリを列挙する(改良版)

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))
            }
        }
    }
}

Liked some of this entry? Buy me a coffee, please.