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

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS