1. package main
    2. import (
    3. "io/ioutil"
    4. "log"
    5. "os"
    6. "fmt"
    7. )
    8. func main() {
    9. files := scanDir("C:\\")
    10. for _, file := range files {
    11. fmt.Println(file)
    12. }
    13. }
    14. // 扫描当前目录下文件,不递归扫描
    15. func scanDir(dirName string) []string {
    16. files, err := ioutil.ReadDir(dirName)
    17. if err != nil {
    18. log.Println(err)
    19. }
    20. var fileList []string
    21. for _, file := range files {
    22. fileList = append(fileList, dirName + string(os.PathSeparator) + file.Name())
    23. }
    24. return fileList
    25. }
    26. // 递归扫描目录
    27. func scanDirs(dirName string) []string {
    28. files, err := ioutil.ReadDir(dirName)
    29. if err != nil {
    30. log.Println(err)
    31. }
    32. var fileList []string
    33. for _, file := range files {
    34. fileList = append(fileList, dirName + string(os.PathSeparator) + file.Name())
    35. if file.IsDir() {
    36. fileList = append(fileList, scanDirs(dirName + string(os.PathSeparator) + file.Name())...)
    37. }
    38. }
    39. return fileList
    40. }