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

标签 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()
}

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

最佳答案

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

例如:

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

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

    // ...
}

关于go - 有没有办法确定当前步骤是否是目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55494698/

相关文章:

Go:函数返回指向内存的指针

godoc http 服务器似乎没有实时重新加载更改

java - 如何通过 Java 使用公私钥身份验证来使用 SFTP 的可靠示例

go - 是否可以在 Go 代码中包含内联汇编?

go - 如何使用假客户端为 client-go 编写简单的测试?

go - 如何忽略 Golang 的 Google Datastore 结构中的零值?

java - SecureFileTransferClient 性能改进

unix - 从终端单行 sftp

c# - 使用 SharpSSH 从 SFTP 获取文件大小

linux - 使远程目录保持最新