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

时间:2015-10-28 17:48:50

标签: go error-handling

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

os.OpenFile(fName, os.O_WRONLY, 0600) 
当文件不存在时,

返回与os.ErrNotExists不同

os.ErrNotExists -> "file does not exist"
err.(*os.PathError).Err -> "no such file or directory"
如果文件不存在,os.Stat也会返回相同的错误。是否存在我可以比较的预定义错误,而不是必须手动执行?

1 个答案:

答案 0 :(得分:11)

  

Package os

     

func IsExist

func IsExist(err error) bool
     

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

     

func IsNotExist

func IsNotExist(err error) bool
     

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)
    }
}

输出:

File Does Not Exist: open No File: No such file or directory