识别现有文件夹

时间:2019-06-06 12:13:32

标签: linux go fileinfo

我有一个问题,似乎是告诉我文件夹显然不存在。

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终端。

我也尝试LstatStat都失败了,更不用说大量示例和不同方式了。我确定这是我不了解的一些底层Linux ...

1 个答案:

答案 0 :(得分:-1)

对此的答案是,我没有通过添加\n来修剪使用strings.Trim(path, "\n")分隔符的ReadString,它解决了我的问题。