识别现有文件夹
Identifying an existing folder
我遇到了一个问题,它似乎告诉我文件夹不存在,而实际上它确实存在。
path, _ := reader.ReadString('\n')
path, err := expand(path)
fmt.Println("Path Expanded: ", path, err)
if err == nil {
if _, err2 := os.Lstat(path); err2 == nil {
fmt.Println("Valid Path")
} else if os.IsNotExist(err2) {
fmt.Println("Invalid Path")
fmt.Println(err2)
} else {
fmt.Println(err2)
}
}
expand 函数简单地将 ~
翻译成 homeDir。
func expand(path string) (string, error) {
if len(path) == 0 || path[0] != '~' {
return path, nil
}
usr, err := user.Current()
if err != nil {
return "", err
}
return filepath.Join(usr.HomeDir, path[1:]), nil
}
如果我输入 ~
的值,它会正确地将其转换为 /home/<user>/
但它最终会声明该文件夹不存在,即使它显然存在,而且我知道我可以访问它,所以它似乎不是权限问题。
如果我尝试将 /root/
作为输入,我会正确地收到权限错误,对此我没有意见。但我希望我的 ~
目录到 return "Valid Path"
我的错误几乎总是: no such file or directory
我在 Lubuntu 19.xx 上,这是一个相当新鲜的安装,我是 运行 这个来自 ~/Projects/src/Playground/AppName
的应用程序,我正在使用 bash 来自 vscode
.
我也试过 Lstat
和 Stat
都失败了,更不用说大量的例子和不同的方法了。我确定这是一些我不理解的潜在 linux 事情...
答案是我没有修整使用 \n
分隔符的 ReadString,通过添加 strings.Trim(path, "\n")
,它纠正了我的问题。
我遇到了一个问题,它似乎告诉我文件夹不存在,而实际上它确实存在。
path, _ := reader.ReadString('\n')
path, err := expand(path)
fmt.Println("Path Expanded: ", path, err)
if err == nil {
if _, err2 := os.Lstat(path); err2 == nil {
fmt.Println("Valid Path")
} else if os.IsNotExist(err2) {
fmt.Println("Invalid Path")
fmt.Println(err2)
} else {
fmt.Println(err2)
}
}
expand 函数简单地将 ~
翻译成 homeDir。
func expand(path string) (string, error) {
if len(path) == 0 || path[0] != '~' {
return path, nil
}
usr, err := user.Current()
if err != nil {
return "", err
}
return filepath.Join(usr.HomeDir, path[1:]), nil
}
如果我输入 ~
的值,它会正确地将其转换为 /home/<user>/
但它最终会声明该文件夹不存在,即使它显然存在,而且我知道我可以访问它,所以它似乎不是权限问题。
如果我尝试将 /root/
作为输入,我会正确地收到权限错误,对此我没有意见。但我希望我的 ~
目录到 return "Valid Path"
我的错误几乎总是: no such file or directory
我在 Lubuntu 19.xx 上,这是一个相当新鲜的安装,我是 运行 这个来自 ~/Projects/src/Playground/AppName
的应用程序,我正在使用 bash 来自 vscode
.
我也试过 Lstat
和 Stat
都失败了,更不用说大量的例子和不同的方法了。我确定这是一些我不理解的潜在 linux 事情...
答案是我没有修整使用 \n
分隔符的 ReadString,通过添加 strings.Trim(path, "\n")
,它纠正了我的问题。