前回の一覧をベースに、ファイル情報取得をしてみた。
ファイル名:readfile1.go サイズ:574 ファイルモード:-rw-rw-rw- 最終更新日時:2018-09-28 10:21:31.645 +0900 JST ディレクトリ?:false ファイル名:stdin.go サイズ:251 ファイルモード:-rw-rw-rw- 最終更新日時:2018-10-02 09:44:43.855 +0900 JST ディレクトリ?:false ファイル名:timenow.go サイズ:441 ファイルモード:-rw-rw-rw- 最終更新日時:2018-10-02 13:13:42.43 +0900 JST ディレクトリ?:false ファイル名:timeobj.go サイズ:283 ファイルモード:-rw-rw-rw- 最終更新日時:2018-10-02 13:23:38.949 +0900 JST ディレクトリ?:false
package main import ( "fmt" "io/ioutil" "log" "os" "path/filepath" ) func main() { dirs := dirtalk("./") for i := 0 ; i < len(dirs) ; i++{ f, err := os.Open(dirs[i]) if err != nil { log.Fatal(err) } defer f.Close() // クローズ時のエラーを無視 // ファイル情報の取得 info, err := f.Stat() if err != nil { log.Fatal(err) } fmt.Printf("ファイル名:%s\n", info.Name()) fmt.Printf("サイズ:%d\n", info.Size()) fmt.Printf("ファイルモード:%v\n", info.Mode()) fmt.Printf("最終更新日時:%v\n", info.ModTime()) fmt.Printf("ディレクトリ?:%v\n\n", info.IsDir()) } } // 再帰読み込みしないVer.(再帰したいなら dirwalkを) func dirtalk(dir string) []string { files, err := ioutil.ReadDir(dir) if err != nil { panic(err) } var paths []string for _, file := range files { if file.IsDir() { // paths = append(paths, dirwalk(filepath.Join(dir, file.Name()))...) continue } paths = append(paths, filepath.Join(dir, file.Name())) } return paths }