在 Go 中检查文件是否存在
在 Go 中处理文件时,通常需要先确定文件是否存在,然后再进行进一步操作。与 Python 的 os.path.exists 不同,Go 标准库没有提供用于此目的的直接函数。
检查文件存在的惯用方法
检查是否存在文件不存在:
if _, err := os.Stat("/path/to/whatever"); errors.Is(err, os.ErrNotExist) { // path/to/whatever does not exist }
检查文件是否存在存在:
if _, err := os.Stat("/path/to/whatever"); err == nil { // path/to/whatever exists } else if errors.Is(err, os.ErrNotExist) { // path/to/whatever does *not* exist } else { // Schrodinger: file may or may not exist. See err for details. // Therefore, do *NOT* use !os.IsNotExist(err) to test for file existence }
说明
os.Stat 函数返回表示文件属性的 FileInfo 对象,如果文件不存在,则返回错误。通过使用errors.Is函数将错误与os.ErrNotExist进行比较,您可以区分文件不存在和其他错误。
注意
避免使用os.IsNotExist 的否定(例如!os.IsNotExist(err))来测试文件是否存在,因为它可能会导致在某些情况下会出现意想不到的行为。
以上是如何在 Go 中检查文件是否存在?的详细内容。更多信息请关注PHP中文网其他相关文章!