go语言实现遍历目录,及查找特定的文件类型

sn-dnv-aps · · 18425 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

 1 // filelist.go  2 package main  3  4 import (  5 //"flag"  6 "fmt"  7 "os"  8 "path/filepath"  9 "strings" 10 ) 11 12 var ( 13 ostype = os.Getenv("GOOS") // 获取系统类型 14 ) 15 16 var listfile []string //获取文件列表 17 18 func Listfunc(path string, f os.FileInfo, err error) error { 19 var strRet string 20 strRet, _ = os.Getwd() 21 //ostype := os.Getenv("GOOS") // windows, linux 22 23 if ostype == "windows" { 24 strRet += "\\" 25 } else if ostype == "linux" { 26 strRet += "/" 27  } 28 29 if f == nil { 30 return err 31  } 32 if f.IsDir() { 33 return nil 34  } 35 36 strRet += path //+ "\r\n" 37 38 //用strings.HasSuffix(src, suffix)//判断src中是否包含 suffix结尾 39 ok := strings.HasSuffix(strRet, ".go") 40 if ok { 41 42 listfile = append(listfile, strRet) //将目录push到listfile []string中 43  } 44 //fmt.Println(ostype) // print ostype 45 fmt.Println(strRet) //list the file 46 47 return nil 48 } 49 50 func getFileList(path string) string { 51 //var strRet string 52 err := filepath.Walk(path, Listfunc) // 53 54 if err != nil { 55 fmt.Printf("filepath.Walk() returned %v\n", err) 56  } 57 58 return " " 59 } 60 61 func ListFileFunc(p []string) { 62 for index, value := range p { 63 fmt.Println("Index = ", index, "Value = ", value) 64  } 65 } 66 67 func main() { 68 //flag.Parse() 69 //root := flag.Arg(0) 70 //fmt.Println() 71 var listpath string 72 fmt.Scanf("%s", &listpath) 73  getFileList(listpath) 74  ListFileFunc(listfile) 75 //getFileList(root) 76 77 }

运行效果如下:

 1 Administrator@WIN7-20131114US /cygdrive/e/golang_test/FolderList  2 $ ./filelist  3 .  4 E:\golang_test\FolderList\.git\COMMIT_EDITMSG  5 E:\golang_test\FolderList\.git\HEAD  6 E:\golang_test\FolderList\.git\config  7 E:\golang_test\FolderList\.git\description  8 E:\golang_test\FolderList\.git\hooks\applypatch-msg.sample  9 E:\golang_test\FolderList\.git\hooks\commit-msg.sample 10 E:\golang_test\FolderList\.git\hooks\post-update.sample 11 E:\golang_test\FolderList\.git\hooks\pre-applypatch.sample 12 E:\golang_test\FolderList\.git\hooks\pre-commit.sample 13 E:\golang_test\FolderList\.git\hooks\pre-rebase.sample 14 E:\golang_test\FolderList\.git\hooks\prepare-commit-msg.sample 15 E:\golang_test\FolderList\.git\hooks\update.sample 16 E:\golang_test\FolderList\.git\index 17 E:\golang_test\FolderList\.git\info\exclude 18 E:\golang_test\FolderList\.git\logs\HEAD 19 E:\golang_test\FolderList\.git\logs\refs\heads\master 20 E:\golang_test\FolderList\.git\logs\refs\remotes\origin\master 21 E:\golang_test\FolderList\.git\objects\26\1859e5deb5e8b620e8effcdddbd76f749f89db 22 E:\golang_test\FolderList\.git\objects\3d\8e579829a9d9f604604e81f008f536da785a0a 23 E:\golang_test\FolderList\.git\objects\8d\362f848a2be8746747bf8377ed0db288a30fa7 24 E:\golang_test\FolderList\.git\objects\97\26e0fab404ab3ee9886b2e319df56326ac8874 25 E:\golang_test\FolderList\.git\objects\aa\a29dfb8415b1fefcfe4eddd799b0fc516c3f8a 26 E:\golang_test\FolderList\.git\objects\db\cbdce2e9c70e4023594cee8e4fefe9d5394934 27 E:\golang_test\FolderList\.git\objects\e2\51918e7226b197e8ad32cbe30c61ddbd262f9a 28 E:\golang_test\FolderList\.git\objects\ff\f5e740d47a1451f7d778de8016ebb3dd6c58dd 29 E:\golang_test\FolderList\.git\refs\heads\master 30 E:\golang_test\FolderList\.git\refs\remotes\origin\master 31 E:\golang_test\FolderList\README.md 32 E:\golang_test\FolderList\filelist.exe 33 E:\golang_test\FolderList\filelist.go 34 Index = 0 Value = E:\golang_test\FolderList\filelist.go

 


有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:sn-dnv-aps

查看原文:go语言实现遍历目录,及查找特定的文件类型

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

18425 次点击  
加入收藏 微博
下一篇:golang 扫雷
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传