zoukankan      html  css  js  c++  java
  • 列出目录和遍历目录

    获取目录列表用 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)
    }
    
  • 相关阅读:
    插入排序java代码
    选择排序java代码
    break语句的作用
    while和do-while的区别
    if-else-if-else与switch的区别
    Java中基本类型的转换规则
    如何让计算机最高效的算出2乘以8?
    |和||的作用和区别
    &和&&的作用和区别
    i++和++i的作用和区别
  • 原文地址:https://www.cnblogs.com/bing-l/p/4077476.html
Copyright © 2011-2022 走看看