如何在Go语言中检查文件是否存在?
为了检查给定目录中是否存在特定文件,在Golang中,我们可以使用Go标准库提供的**os**包中的**Stat()**和**isNotExists()**函数。
**Stat()**函数用于返回描述文件的fileInfo结构。让我们首先只使用**Stat()**函数,看看它是否足以检测Go中文件的存在。
示例1
考虑以下代码。
package main import( "fmt" "os" ) func main() { if _, err := os.Stat("sample.txt"); err == nil { fmt.Printf("File exists\n"); } else { fmt.Printf("File does not exist\n"); } }
在上面的代码中,我们尝试使用**os.Stat()**函数查找名为**sample.txt**的文件是否存在,如果我们没有遇到错误,则会在终端打印第一个**Printf()**语句。
输出
如果我们使用命令**go run main.go**运行上述代码,则会在终端得到以下输出。
File exists
上述方法运行良好,但有一个陷阱。**Stat()**函数返回的**err**可能是由于权限错误或磁盘故障引起的,因此始终建议与**os.Stat()**函数一起使用**isNotExists(err)**函数。
示例2
考虑以下代码。
package main import( "fmt" "os" ) func main() { if fileExists("sample.txt") { fmt.Println("sample file exists") } else { fmt.Println("sample file does not exist") } } func fileExists(filename string) bool { info, err := os.Stat(filename) if os.IsNotExist(err) { return false } return !info.IsDir() }
输出
如果我们使用**go run main.go**运行上述代码,则会在终端得到以下输出。
File exists
广告