如何检查文件在Go中是否存在?(避免多余的数据竞争)
大家好!我刚开始学习Go,遇到了一个看似简单的任务:在读取或写入文件之前,需要检查文件是否存在于磁盘上。在Python中,我习惯这样做:
```go
import os
if os.path.exists("myfile.txt"):
print("文件存在")
```
但在Go中,我没有找到这么简单的函数。`os`包的文档中有`Stat()`函数,如果文件不存在会返回一个错误。我写了这样的代码:
```go
package main
import (
"fmt"
"os"
)
func main() {
_, err := os.Stat("myfile.txt")
if err != nil {
if os.IsNotExist(err) {
fmt.Println("文件不存在")
} else {
fmt.Println("发生了其他错误:", err)
}
} else {
fmt.Println("文件存在")
}
}
```
看起来能工作,但我困惑的是,Go的文档中经常提到,在读取/写入之前检查存在性是一种反模式,因为在检查和操作之间