Golang文件存在判断
在Golang中如何判断文件是否存在?我尝试用os.Stat()方法,但不确定这是否是最佳实践。当文件不存在时,os.Stat()会返回错误,但我想知道是否有更高效或更简洁的方法来实现这个功能?另外,这种方法在不同操作系统下的表现是否一致?
2 回复
在Golang中判断文件是否存在,可以使用以下几种方法:
1. 使用 os.Stat() 方法(推荐)
package main
import (
"fmt"
"os"
)
func fileExists(filename string) bool {
_, err := os.Stat(filename)
if err == nil {
return true
}
if os.IsNotExist(err) {
return false
}
return false
}
func main() {
filename := "test.txt"
if fileExists(filename) {
fmt.Printf("文件 %s 存在\n", filename)
} else {
fmt.Printf("文件 %s 不存在\n", filename)
}
}
2. 使用 os.Open() 方法
func fileExists2(filename string) bool {
file, err := os.Open(filename)
if err != nil {
return false
}
defer file.Close()
return true
}
3. 更完整的检查函数
func checkFileExists(filename string) (bool, error) {
info, err := os.Stat(filename)
if err != nil {
if os.IsNotExist(err) {
return false, nil
}
return false, err
}
return !info.IsDir(), nil
}
推荐使用第一种方法,因为它:
- 明确区分文件不存在和其他错误
- 性能较好
- 代码简洁易懂
注意:这些方法只检查文件是否存在,不检查文件权限或其他属性。


