golang - 从文件夹内读取子文件和子文件夹

go-bot

2018-04-26T08:18:23Z||2018-04-26T08:18:23Z

下面代码会首先获取用户的Home目录,然后输出Home目录的内容,文件夹后面会多一个/,类似的输出:

Documents/
Downloads/
file1
file2
directory1/
directory2/

代码:

package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "os"
    "os/user"
    "path/filepath"
)

// 判断是否是文件
func IsFile(file string) (bool, error) {
    info, err := os.Stat(file)
    if err != nil {
        return false, err
    }
    return !info.IsDir(), nil
}

func main() {
    usr, err := user.Current()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(usr.HomeDir)

    files, err := ioutil.ReadDir(usr.HomeDir)
    if err != nil {
        log.Fatal(err)
    }

    for _, f := range files {
        isFile, _ := IsFile(filepath.Join(usr.HomeDir, f.Name()))
        fmt.Print(f.Name())
        if !isFile {
            fmt.Print("/")
        }
        fmt.Println()
    }
}