我一直在阅读和谷歌搜索,但我似乎无法找到这个简单的答案.
我有一个读取文件的函数,但如果文件不存在则会引起恐慌.我想要做的是一个函数,在读取之前,检查文件是否存在,如果不存在,它会创建一个空文件.这就是我所拥有的.
func exists(path string) (bool, error) {
_, err := os.Stat(path)
if err == nil {
return true, nil
}
if os.IsNotExist(err) {
return false, nil
}
return true, err
}
Run Code Online (Sandbox Code Playgroud)
Jim*_*imB 37
不要先尝试检查是否存在,因为如果同时创建文件,则会有竞争.如果文件O_CREATE不存在,您可以使用该标志打开该文件以创建它:
os.OpenFile(name, os.O_RDONLY|os.O_CREATE, 0666)
Run Code Online (Sandbox Code Playgroud)
只是试图改进优秀的公认答案。
检查错误和Close()打开的文件是一个好主意,因为文件描述符是一种有限的资源。您可能会比 GC 运行更快地耗尽文件描述符,并且在 Windows 上您可能会遇到文件共享冲突。
func TouchFile(name string) error {
file, err := os.OpenFile(name, os.O_RDONLY|os.O_CREATE, 0644)
if err != nil {
return err
}
return file.Close()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15299 次 |
| 最近记录: |