我正在尝试从一个目录下载文件,而所需目录中没有其他目录。
我已经在互联网上搜索了答案,我发现的唯一方法是使用FileMask
"|*/"
in TransferOptions
,它不起作用,并且什么也没有下载。
使用最新版本 (5.7.5)
TransferOptions t = new TransferOptions { FileMask = "|*/" };
session.GetFiles("/", @"C:\bla", false, t);
我正在尝试从一个目录下载文件,而所需目录中没有其他目录。
我已经在互联网上搜索了答案,我发现的唯一方法是使用FileMask
"|*/"
in TransferOptions
,它不起作用,并且什么也没有下载。
使用最新版本 (5.7.5)
TransferOptions t = new TransferOptions { FileMask = "|*/" };
session.GetFiles("/", @"C:\bla", false, t);
您排除子目录的代码是正确的。
另请参阅 WinSCP 常见问题解答如何以非递归方式传输目录?
TransferOptions transferOptions = new TransferOptions();
transferOptions.FileMask = "|*/";
session.PutFiles(@"d:\toupload\*", "/home/user/", false, transferOptions);
它等同于您的代码。
您的代码中还有其他问题。
您要求 WinSCP 下载根目录,但要排除所有目录。所以什么都没有下载。您需要要求下载根目录中的所有文件:/*
.
引用以下remotePath
参数GetFiles
的文档:
远程目录的完整路径,后跟斜杠和通配符以选择要下载的文件或子目录。要下载目录中的所有文件,请使用 mask
*
。
我假设这C:\bla
是一个目标目录。因此,您必须通过附加反斜杠来告诉 WinSCP 将文件下载到目录中:C:\bla\
. 否则 WinSCP 将尝试将所有文件保存到C:\
name bla
。失败,如果已经有一个具有该名称的目录。或者一个一个覆盖文件,如果没有的话。
将文件下载到的完整路径。下载多个文件时,路径中的文件名应替换为操作掩码或省略(路径以反斜杠结尾)。
您应该通过检查返回TransferOperationResult
或直接调用来检查错误.Check()
。
所以正确的代码是:
TransferOptions t = new TransferOptions { FileMask = "|*/" };
session.GetFiles("/*", @"C:\bla\", false, t).Check();