欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-12-07 20:43:02
本文实例讲述了go语言实现列出目录和遍历目录的方法。分享给大家供大家参考。具体如下: go语言获取目录列表用 ioutil.readdir(),遍历目录用 filepat...

本文实例讲述了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语言程序设计有所帮助。