当前位置: 首页 > 编程笔记 >

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

阮华美
2023-03-14
本文向大家介绍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语言程序设计有所帮助。

 类似资料:
  • 本小节介绍如何获取必要的FDS Bucket信息 选择生态云机房 登陆生态网站,点击其右上角,选择生态云机房,如下图所示: **注意:对于数据流相关的操作,需要保证所有的操作都使用上述选择的生态云机房** 进入生态云FDS(即文件存储)页面 进入文件存储页面,如下图所示: 查询FDS Bucket 信息 如下图,在需要导入数据的FDS Bucket属性中查看Bucket信息,包括名称和所有者; 这

  • 通过上一节《 Go语言goroutine》的学习,关键字 go 的引入使得在Go语言中并发编程变得简单而优雅,但我们同时也应该意识到并发编程的原生复杂性,并时刻对并发中容易出现的问题保持警惕。 事实上,不管是什么平台,什么编程语言,不管在哪,并发都是一个大话题。并发编程的难度在于协调,而协调就要通过交流,从这个角度看来,并发单元间的通信是最大的问题。 在工程上,有两种最常见的并发通信模型:共享数据

  • 本文向大家介绍C语言中获取和改变目录的相关函数总结,包括了C语言中获取和改变目录的相关函数总结的使用技巧和注意事项,需要的朋友参考一下 C语言getcwd()函数:取得当前的工作目录 头文件: 定义函数: 函数说明:getcwd()会将当前的工作目录绝对路径复制到参数buf 所指的内存空间,参数size 为buf 的空间大小。 注: 1、在调用此函数时,buf 所指的内存空间要足够大。若工作目录绝

  • 本文向大家介绍GO语言实现的端口扫描器分享,包括了GO语言实现的端口扫描器分享的使用技巧和注意事项,需要的朋友参考一下

  • 本文向大家介绍C#获取进程或线程相关信息的方法,包括了C#获取进程或线程相关信息的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#获取进程或线程相关信息的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 本文向大家介绍GO语言实现列出目录和遍历目录的方法,包括了GO语言实现列出目录和遍历目录的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了GO语言实现列出目录和遍历目录的方法。分享给大家供大家参考。具体如下: GO语言获取目录列表用 ioutil.ReadDir(),遍历目录用 filepath.Walk(),使用方法课参考本文示例。 具体示例代码如下: 希望本文所述对大家的GO语言程