golang

前回の一覧をベースに、ファイル情報取得をしてみた。

実行結果

ファイル名: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
}

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-10-19 (金) 09:59:49