繁体   English   中英

WinSCP .NET程序集-非递归GetFiles根目录(无子目录)

[英]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);

这等效于您的代码。


您的代码中还有其他问题。

  1. 您要求WinSCP下载根目录,但要排除所有目录。 所以什么也没有下载。 您需要要求下载根目录/*中的所有文件。

    引用文档获取GetFilesremotePath参数

    远程目录的完整路径, 后跟斜杠和通配符以选择要下载的文件或子目录。 要下载目录中的所有文件,请使用mask *

  2. 我假设C:\\bla是目标目录。 因此,您必须告诉WinSCP通过添加反斜杠C:\\bla\\将文件下载到目录中。 否则,WinSCP将尝试将所有文​​件保存到名称为bla C:\\ 失败,如果已经有一个具有该名称的目录。 或者,如果没有,则将文件彼此覆盖。

    GetFileslocalPath参数的文档:

    下载文件的完整路径。 下载多个文件时,路径中的文件名应替换为操作掩码或省略( 路径以反斜杠结尾 )。

  3. 您应该通过检查返回的TransferOperationResult或直接调用.Check()来检查错误。

因此正确的代码是:

TransferOptions t = new TransferOptions { FileMask = "|*/" };

session.GetFiles("/*", @"C:\bla\", false, t).Check();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM