我有一个问题,似乎是告诉我文件夹显然不存在。
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/
作为输入,那么我会正确地得到一个权限错误,我可以接受。但是我希望我的~
目录返回"Valid Path"
我的错误几乎总是: no such file or directory
我正在使用Lubuntu 19.xx,这是一个全新的安装,我正在~/Projects/src/Playground/AppName
上运行此应用程序,并且正在使用vscode
上的bash终端。
我也尝试Lstat
和Stat
都失败了,更不用说大量示例和不同方式了。我确定这是我不了解的一些底层Linux ...
答案 0 :(得分:-1)
对此的答案是,我没有通过添加\n
来修剪使用strings.Trim(path, "\n")
分隔符的ReadString,它解决了我的问题。