zoukankan      html  css  js  c++  java
  • goLang文件遍历

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

      

  • 相关阅读:
    BASE64Encoder/BASE64Decoder(转)
    对象转化为json
    Intent
    RecyclerView的单击和长按事件(转)
    selector的例子
    修改app工程名 Android Studio
    The number of method references in a .dex file cannot exceed 64K.(转)
    $(function() {})
    jQuery插件开发的两种方法及$.fn.extend的详解(转)
    myeclipse2014安装aptana3.4.0插件(转)
  • 原文地址:https://www.cnblogs.com/zhangym/p/5809552.html
Copyright © 2011-2022 走看看