unix 如何在os.stat中处理“没有这样的文件或目录”

nkkqxpd9  于 2023-01-25  发布在  Unix
关注(0)|答案(1)|浏览(248)

我有一段代码,它查找stat文件,如果文件不存在,则返回一些默认值。也就是说,这段代码看起来如下所示:

fileInfo, err := os.Stat(absolutePath)
if err != nil {
    if os.IsNotExist(err) {
        return <default val>, nil
    }
    return nil, fmt.Errorf(...)
}

为了“捕捉”“文件不存在”错误,我读到建议使用os.IsNotExist来检查错误是否指示文件不存在。由于平台返回open <blah>: no such file or directory,因此os.IsNotExist无法捕获此错误。我可以在此处添加自己的错误处理,但是否有惯用的方法来处理os调用中的“file does not exist”错误?看起来os.IsNotExist检查处理的错误是一种特殊情况,仅针对一种类型的潜在“文件不存在”错误。

jckbn6z7

jckbn6z71#

如果您阅读文档,您将看到以下内容:

    • 一月一日**
func IsNotExist(err error) bool

IsNotExist返回一个布尔值,指示错误是否报告文件或目录不存在。ErrNotExist以及某些syscall错误满足此条件。
此函数早于errors.Is。它仅支持os包返回的错误。新代码应使用errors.Is(err, fs.ErrNotExist)。[* Emp.mine *]

相关问题