gpt4 book ai didi

文件在 Go 中既存在又不存在?

转载 作者:IT王子 更新时间:2023-10-29 01:55:37 25 4
gpt4 key购买 nike

这个 Go 程序说文件既不存在也不不存在有什么原因吗?大概是其中之一?

package main

import (
"fmt"
"log"
"os"
"path/filepath"
)

func main() {

for _, fn := range os.Args[1:] {
src, _ := filepath.Abs(fn)
fmt.Println(fn)
fmt.Println(src)
if _, e := os.Stat(src); os.IsExist(e) {
log.Fatalf("Does exist: %s", src)
}
if _, e := os.Stat(src); os.IsNotExist(e) {
log.Fatalf("Does not exist: %s", src)
}
}
}

最佳答案

os.IsExist 和 os.IsNotExist 函数不会测试相反的条件,即使名称似乎暗示它们会测试。

函数os.IsExist由于文件已存在而导致操作失败时返回 true。函数os.IsNotExist由于文件不存在而导致操作失败时返回 true。

函数 os.Stat 总是返回 os.IsExist(err) == false 的错误。 os.Stat 函数永远不会失败,因为文件存在。

带有 O_CREAT 的函数 os.OpenFile 总是返回错误 os.IsNotExist(err) == false。因为带有 O_CREAT 的 os.OpenFile 的目的是创建文件,所以文件丢失绝不是错误。

关于文件在 Go 中既存在又不存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25939584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com