Go语言扫描目录并获取相关信息的方法

 更新时间:2015年03月02日 12:03:25   作者:两把刷子  
这篇文章主要介绍了Go语言扫描目录并获取相关信息的方法,实例分析了Go语言操作目录及文件的技巧,需要的朋友可以参考下

本文实例讲述了Go语言扫描目录并获取相关信息的方法。分享给大家供大家参考。具体分析如下:

前言:最近看到Go里面有一个func很容易就可以扫描整个目录,并且可以得到相应的目录和文件信息,所以我将其进行了封装,拿到file info的所有信息 这样就可以方便的做其它用途了。

直接上代码,代码基于Go version 1

复制代码 代码如下:
package main
import (
    "path/filepath"
    "os"
    "flag"
    "fmt"
    "time"
)
const (
    IsDirectory             = iota
    IsRegular
    IsSymlink
)
type sysFile struct { 
    fType       int
    fName       string
    fLink       string
    fSize       int64
    fMtime      time.Time
    fPerm       os.FileMode
}
type F struct {
    files []*sysFile
}
func (self *F) visit(path string, f os.FileInfo, err error) error {
    if ( f == nil ) {
        return err
    }
    var tp int
    if f.IsDir() {
        tp = IsDirectory
    }else if (  f.Mode() & os.ModeSymlink ) > 0 {
        tp = IsSymlink
    }else{
        tp = IsRegular
    }
    inoFile := &sysFile{
        fName : path,
        fType : tp,
        fPerm : f.Mode(),
        fMtime: f.ModTime(),
        fSize : f.Size(),
    }
    self.files = append( self.files, inoFile )
    return nil
}
func main() {
    flag.Parse()
    root := flag.Arg(0)
    self := F{
        files: make( []*sysFile, 0 ),
    }
    err := filepath.Walk(root, func(path string, f os.FileInfo, err error) error {
        return self.visit(path, f, err)
    })
    if err != nil { 
      fmt.Printf("filepath.Walk() returned %v\n", err)
    }
    for _, v := range self.files {
        fmt.Println( v.fName,v.fSize )
    }
}

希望本文所述对大家的Go语言程序设计有所帮助。

相关文章

  • GoLand如何设置中文

    GoLand如何设置中文

    这篇文章主要介绍了GoLand如何设置中文,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Golang中slice删除元素的性能对比

    Golang中slice删除元素的性能对比

    go没有对删除切片元素提供专用的语法或者接口,需要使用切片本身的特性来删除元素,下面这篇文章主要给大家介绍了关于Golang中slice删除元素的性能对比,需要的朋友可以参考下
    2022-06-06
  • GO语言的数组array与切片slice详解

    GO语言的数组array与切片slice详解

    这篇文章主要介绍了GO语言的数组array与切片slice,包括了GO语言数组定义赋值,GO语言多维数组,GO语言切片等知识点需要的朋友可以参考下
    2022-12-12
  • golang 切片的三种使用方式及区别的说明

    golang 切片的三种使用方式及区别的说明

    这篇文章主要介绍了golang 切片的三种使用方式及区别的说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Golang的锁机制与使用技巧小结

    Golang的锁机制与使用技巧小结

    本文主要介绍了Golang的锁机制与使用技巧小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Golang 中的json.Marshal问题总结(推荐)

    Golang 中的json.Marshal问题总结(推荐)

    这篇文章主要介绍了Golang中的json.Marshal问题总结,本文通过一个例子给大家详细讲解,本次提出的问题中,我们不难注意到其中的time.Time是一个匿名(Anonymous)字段,而这个就是答案的由来,需要的朋友可以参考下
    2022-06-06
  • goLand Delve版本太老的问题及解决

    goLand Delve版本太老的问题及解决

    这篇文章主要介绍了goLand Delve版本太老的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Go panic和recover函数使用细节深入探究

    Go panic和recover函数使用细节深入探究

    这篇文章主要为大家介绍了Go 的panic和recover函数使用细节深入探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Go语言中循环Loop的用法介绍

    Go语言中循环Loop的用法介绍

    这篇文章介绍了Go语言中循环Loop的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Go编译原理之函数内联

    Go编译原理之函数内联

    这篇文章主要为大家介绍了Go编译原理之函数内联示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08

最新评论