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

      

  • 相关阅读:
    手写web框架之加载配置项目
    JAVA中注解的实现原理
    使用Mock 测试 controller层
    如何写resultful接口
    RSA加密、解密、签名、验签的原理及方法
    AES256位加密
    聊聊分布式事务,再说说解决方案
    分布式锁简单入门以及三种实现方式介绍
    redis总结(面试中容易遇到的)
    字符串匹配的KMP算法
  • 原文地址:https://www.cnblogs.com/zhangym/p/5809552.html
Copyright © 2011-2022 走看看