gpt4 book ai didi

c# - WinSCP Session.EnumerateRemoteFiles 的多个文件掩码

转载 作者:行者123 更新时间:2023-11-30 17:32:48 35 4
gpt4 key购买 nike

我正在重建系统监控应用程序的 FTP 部分,必须能够下载以下任何文件:

  • .csv
  • .xlsx
  • .xls

当我尝试设置该掩码时,它返回 0 个文件,但如果我只选择其中一个,它会完美运行。

string FileMask = "*.csv; *.xlsx; *.xls";

var sessionOptions = new SessionOptions
{
Protocol = Protocol.Sftp,
HostName = ConfigurationManager.AppSettings["FtpHost"],
UserName = ConfigurationManager.AppSettings["FtpUsr"],
Password = ConfigurationManager.AppSettings["FtpPwd"],
SshHostKeyFingerprint = ConfigurationManager.AppSettings["SshHostKeyFingerprint"]
};

using (Session session = new Session())
{
session.Open(sessionOptions);

List<string> files =
session.EnumerateRemoteFiles("/", FileMask, EnumerationOptions.AllDirectories)
.Select(fileInfo => fileInfo.FullName)
.ToList();

Console.WriteLine($"Found {files.Count} files");
}

我已经尝试了一些东西,但没有任何东西按照我想要的方式工作。

最佳答案

mask argument of Session.EnumerateRemoteFiles是 Windows 通配符。无法使用 Windows 通配符匹配多个扩展名。

但是您可以自己过滤文件。例如使用正则表达式:

Regex mask = new Regex(@"\.(csv|xls|xlsx)$", RegexOptions.IgnoreCase);
List <string> files =
session.EnumerateRemoteFiles("/", null, EnumerationOptions.AllDirectories)
.Where(fileInfo => mask.Match(fileInfo.Name).Success)
.Select(fileInfo => fileInfo.FullName)
.ToList();

关于c# - WinSCP Session.EnumerateRemoteFiles 的多个文件掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45825343/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com