有没有办法确定当前步骤是否为目录?

时间:2019-04-03 12:02:39

标签: go sftp

我需要实现连接到主机的sftp客户端,读取指定文件夹中的所有可用文件,然后检查特定文件是否与模式匹配并将其复制到本地目录中。问题是我找不到办法。

我尝试使用client.Walk,但无法找出一种了解是否为目录的方法并跳过它:

walker := client.Walk(startDir)
for walker.Step() {
    if err := walker.Err(); err != nil {
        fmt.Fprintln(os.Stderr, err)
        continue
    }


    filePath := walker.Path()
}

如何确定当前迭代是否为目录?

1 个答案:

答案 0 :(得分:4)

您可以使用Walker.Stat()来获取有关通过调用Walker.Step()访问的最新文件或目录的信息。它会返回具有IsDir()方法的os.FileInfo类型的值。

例如:

for walker.Step() {
    if err := walker.Err(); err != nil {
        fmt.Fprintln(os.Stderr, err)
        continue
    }

    if fi := walker.Stat(); fi.IsDir() {
        continue // Skip dir
    }

    // ...
}