为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕慕森 2021-04-30 18:33:38
有没有办法确定我的* File是指向文件还是目录?fileOrDir, err := os.Open(name)// How do I know whether I have a file or directory?如果只是一个文件,我希望能够读取有关该文件的统计信息,如果是一个目录,我希望能够读取该目录中的文件fileOrDir.Readdirnames(0) // If diros.Stat(name) // If file
查看完整描述

3 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

例如,


package main


import (

    "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:。


查看完整回答
反对 回复 2021-05-10
?
达令说

TA贡献1821条经验 获得超6个赞

这是另一种可能性:


import "os"


func IsDirectory(path string) (bool, error) {

    fileInfo, err := os.Stat(path)

    if err != nil{

      return false, err

    }

    return fileInfo.IsDir(), err

}


查看完整回答
反对 回复 2021-05-10
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

import "os"


// FileExists reports whether the named file exists as a boolean

func 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 boolean

func DirExists(name string) bool {

    if fi, err := os.Stat(name); err == nil {

        if fi.Mode().IsDir() {

            return true

        }

    }

    return false

}


查看完整回答
反对 回复 2021-05-10
  • 3 回答
  • 0 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信