Golang确定* File是指向文件还是目录

有没有办法确定我的* File是指向文件还是目录?


fileOrDir, err := os.Open(name)

// How do I know whether I have a file or directory?

如果只是一个文件,我希望能够读取有关该文件的统计信息,如果是一个目录,我希望能够读取该目录中的文件


fileOrDir.Readdirnames(0) // If dir

os.Stat(name) // If file


慕慕森
浏览 188回答 3
3回答

不负相思意

例如,package mainimport (    "fmt"    "os")func main() {    name := "FileOrDir"    fi, err := os.Stat(name)    if err != nil {        fmt.Println(err)        return    }    switch mode := fi.Mode(); {    case mode.IsDir():        // do directory stuff        fmt.Println("directory")    case mode.IsRegular():        // do file stuff        fmt.Println("file")    }}笔记:该示例适用于Go 1.1。对于Go 1.0,请替换case mode.IsRegular():为case mode&os.ModeType == 0:。

达令说

这是另一种可能性:import "os"func IsDirectory(path string) (bool, error) {    fileInfo, err := os.Stat(path)    if err != nil{      return false, err    }    return fileInfo.IsDir(), err}

一只甜甜圈

import "os"// FileExists reports whether the named file exists as a booleanfunc FileExists(name string) bool {    if fi, err := os.Stat(name); err == nil {        if fi.Mode().IsRegular() {            return true        }    }    return false}// DirExists reports whether the dir exists as a booleanfunc DirExists(name string) bool {    if fi, err := os.Stat(name); err == nil {        if fi.Mode().IsDir() {            return true        }    }    return false}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go