我需要实现连接到主机的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()
}
如何确定当前迭代是否为目录?
答案 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
}
// ...
}