有沒有方法可以確定我的*文件是指向文件還是目錄?Golang確定*文件是指向文件還是目錄
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
有沒有方法可以確定我的*文件是指向文件還是目錄?Golang確定*文件是指向文件還是目錄
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
例如,
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")
}
}
注:
的例子是圍棋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)
return fileInfo.IsDir(), err
}
這裏是如何做測試在同一行:
if info, err := os.Stat(path); err == nil && info.IsDir() {
...
}
小心:目錄必須存在 – davidhq 2015-06-08 17:57:59