使用 WinSCP .NET 程序集从 FTP 服务器下载除特定文件夹之外的所有文件



到目前为止,这是我用来获取文件夹内的所有项目但在此文件夹内的代码,有一个我不想包含在下载中的子文件夹,有没有办法不包括该文件夹?

session.GetFiles("/*.*", @"D:Download", false, transferOptions);

TransferOptions transferOptions = new TransferOptions();
transferOptions.TransferMode = TransferMode.Binary;
TransferOperationResult transferResult;
transferResult =
session.GetFiles("/*.*", @"D:Download", false, transferOptions);

这是我用来下载所有文件的完整代码

SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Ftp,
HostName = "sample",
UserName = "sample",
Password = "sample",
};
using (Session session = new Session())
{
// Connect
session.Open(sessionOptions);
// Your code
TransferOptions transferOptions = new TransferOptions();
transferOptions.TransferMode = TransferMode.Binary;
TransferOperationResult transferResult;
transferResult =
session.GetFiles("/*.*", @"D:Download", false, transferOptions);

// Print results
foreach (TransferEventArgs transfer in transferResult.Transfers)
{
listBox1.Items.Add("Files Downloaded : "+ transfer.FileName);
}
}

编辑:这是我在FileMask中尝试过的

TransferOptions transferOptions = new TransferOptions();
transferOptions.FileMask = "/*.*|/.git";

TransferOperationResult transferResult;
transferResult =
session.GetFiles("/*.*", @"D:Download", false, transferOptions);

使用TransferOptions.FileMask

TransferOptions transferOptions = new TransferOptions();
transferOptions.FileMask = "*.* | .git/";
...
...
transferResult = session.GetFiles("/someremotefolder/*.*", @"D:Download", false, transferOptions);

注意: - 管道|分离器结合了includeexclude掩模。

更多详细信息: https://winscp.net/eng/docs/file_mask#include_exclude

最新更新