go - 在磁盘上找不到确实存在的文件或目录

标签 go

我目前正在调查 go 以了解更多相关信息,但我已经找到了进入我无法突破的墙的方法。我想做的是获取目录或文件的用户输入等:/Users/me/Documents/test.sql 并将其复制到另一个目录等:/usr/local/share/myprogram

问题是 os.Lstat 在我尝试的任何事情中都找不到它...

我知道 test.sql 存在,如果我在终端中使用 open/Users/me/Documents/test.sql,Go 不会说找不到我设法打开它,所以它就在那里.

为什么会这样?这是 go 的东西吗,路径设置为只在工作目录中查找文件?我该如何克服这个问题?

os.Lstat("/Users/me/Documents/test.sql")

我也尝试过使用文件路径

toPath, _ := filepath.Abs("/Users/me/Documents/test.sql")
os.Lstat(toPath)

我希望找到这个文件,但它没有

最佳答案

docs说:

Lstat returns a FileInfo describing the named file. If the file is a symbolic link, the returned FileInfo describes the symbolic link. Lstat makes no attempt to follow the link. If there is an error, it will be of type *PathError.

这是您可以尝试的示例:

package main

import (
    "fmt"
    "log"
    "os"
)

func main() {
    desc, err := os.Lstat("/Users/me/Documents/test.sql")
    if err != nil {
        // prints the error and stop
        log.Fatal(err)
    }
    // prints the filename
    fmt.Println(desc.Name())
}

关于go - 在磁盘上找不到确实存在的文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55798274/

相关文章:

go - 从具有多个返回值的函数调用中仅获取特定值?

go - 在 Go 中,我们可以使用每个键的锁来同步映射的每个键吗?

go - TCP 客户端在读取超时后是否可以接收数据?

go - 消息包之间的转换

go - 通过替换相同的子字符串来格式化字符串

go - 使用传递的参数渲染部分模板

Go 二进制编码变体与固定 slice 长度

go - 如何通过 kubernetes go-client 获取 pod 资源使用情况?

go - 将 net.IP 包装在自定义类型中并在 golang 中添加方法

xml - Golang 指定 xml 结构中的顶级标签