#author("2018-10-19T09:59:49+09:00","default:yakumo_murakami","yakumo_murakami")
[[golang]]
前回の一覧をベースに、ファイル情報取得をしてみた。
* 実行結果 [#nc401818]
ファイル名: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
* コード [#tbe9e68b]
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
}