在golang os.OpenFile如果文件不存在则不返回os.ErrNotExist

Adr*_*jús 8 error-handling go

我正在尝试打开一个文件,我想知道它是否存在不起作用.但错误

os.OpenFile(fName, os.O_WRONLY, 0600) 
Run Code Online (Sandbox Code Playgroud)

当文件不存在时返回与os.ErrNotExists不同

os.ErrNotExists -> "file does not exist"
err.(*os.PathError).Err -> "no such file or directory"
Run Code Online (Sandbox Code Playgroud)

如果文件不存在,os.Stat也会返回相同的错误.是否存在我可以比较的预定义错误,而不是必须手动执行?

pet*_*rSO 12

包os

func IsExist

func IsExist(err error) bool
Run Code Online (Sandbox Code Playgroud)

IsExist返回一个布尔值,指示是否已知错误报告文件或目录已存在.ErrExist满足它以及一些系统调用错误.

func IsNotExist

func IsNotExist(err error) bool
Run Code Online (Sandbox Code Playgroud)

IsNotExist返回一个布尔值,指示是否已知错误报告文件或目录不存在.ErrNotExist满足它以及一些系统调用错误.

使用该os.IsNotExist功能.例如,

package main

import (
    "fmt"
    "os"
)

func main() {
    fname := "No File"
    _, err := os.OpenFile(fname, os.O_WRONLY, 0600)
    if err != nil {
        if os.IsNotExist(err) {
            fmt.Print("File Does Not Exist: ")
        }
        fmt.Println(err)
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

File Does Not Exist: open No File: No such file or directory
Run Code Online (Sandbox Code Playgroud)