当前位置 博文首页 > GO语言实现列出目录和遍历目录的方法

    GO语言实现列出目录和遍历目录的方法

    作者:admin 时间:2021-02-09 15:06

    本文实例讲述了GO语言实现列出目录和遍历目录的方法。分享给大家供大家参考。具体如下:

    GO语言获取目录列表用 ioutil.ReadDir(),遍历目录用 filepath.Walk(),使用方法课参考本文示例。

    具体示例代码如下:

    复制代码 代码如下:
    package main

    import (
     "fmt"
     "io/ioutil"
     "os"
     "path/filepath"
     "strings"
    )

    //获取指定目录下的所有文件,不进入下一级目录搜索,可以匹配后缀过滤。
    func ListDir(dirPth string, suffix string) (files []string, err error) {
     files = make([]string, 0, 10)

     dir, err := ioutil.ReadDir(dirPth)
     if err != nil {
      return nil, err
     }

     PthSep := string(os.PathSeparator)
     suffix = strings.ToUpper(suffix) //忽略后缀匹配的大小写

     for _, fi := range dir {
      if fi.IsDir() { // 忽略目录
       continue
      }
      if strings.HasSuffix(strings.ToUpper(fi.Name()), suffix) { //匹配文件
       files = append(files, dirPth+PthSep+fi.Name())
      }
     }

     return files, nil
    }

    //获取指定目录及所有子目录下的所有文件,可以匹配后缀过滤。
    func WalkDir(dirPth, suffix string) (files []string, err error) {
     files = make([]string, 0, 30)
     suffix = strings.ToUpper(suffix) //忽略后缀匹配的大小写

     err = filepath.Walk(dirPth, func(filename string, fi os.FileInfo, err error) error { //遍历目录
      //if err != nil { //忽略错误
      // return err
      //}

      if fi.IsDir() { // 忽略目录
       return nil
      }

      if strings.HasSuffix(strings.ToUpper(fi.Name()), suffix) {
       files = append(files, filename)
      }

      return nil
     })

     return files, err
    }

    func main() {
     files, err := ListDir("D:\\Go", ".txt")
     fmt.Println(files, err)

     files, err = WalkDir("E:\\Study", ".pdf")
     fmt.Println(files, err)
    }

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

    js
    下一篇:没有了