[英]WinSCP .NET assembly - GetFiles root directory non-recursive (without subdirs)
我正在尝试从目录下载文件,而在通缉目录中没有其他目录。
我已经在Internet上搜索了答案,我发现的唯一发现是在TransferOptions
使用FileMask
"|*/"
,它不起作用,并且不下载任何内容。
使用最新版本(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下载根目录,但要排除所有目录。 所以什么也没有下载。 您需要要求下载根目录/*
中的所有文件。
引用文档获取GetFiles
的remotePath
参数 :
远程目录的完整路径, 后跟斜杠和通配符以选择要下载的文件或子目录。 要下载目录中的所有文件,请使用mask
*
。
我假设C:\\bla
是目标目录。 因此,您必须告诉WinSCP通过添加反斜杠C:\\bla\\
将文件下载到目录中。 否则,WinSCP将尝试将所有文件保存到名称为bla
C:\\
。 失败,如果已经有一个具有该名称的目录。 或者,如果没有,则将文件彼此覆盖。
下载文件的完整路径。 下载多个文件时,路径中的文件名应替换为操作掩码或省略( 路径以反斜杠结尾 )。
您应该通过检查返回的TransferOperationResult
或直接调用.Check()
来检查错误。
因此正确的代码是:
TransferOptions t = new TransferOptions { FileMask = "|*/" };
session.GetFiles("/*", @"C:\bla\", false, t).Check();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.