我正在尝试使用FTP / SFTP连接从远程服务器获取特定文件,我遇到的问题是,我正在尝试使用特定模式获取远程目录中的文件数。我正在使用面具,但不适合我,它抛出异常: 这就是我所拥有的
DataFile.sRemoteDirectory = "/user/ftpuser/test/";
receivepattern = "Del*";
filesCount =
session.ListDirectory(
session.EscapeFileMask(DataFile.sRemoteDirectory + receivepattern))
.Files.Where(x => !x.IsDirectory).Count();
答案 0 :(得分:0)
Session.ListDirectory
method不接受通配符,只接受路径。
由于WinSCP .NET程序集5.9,您可以改为使用Session.EnumerateRemoteFiles
method:
filesCount =
session.EnumerateRemoteFiles(
DataFile.sRemoteDirectory, receivepattern, EnumerationOptions.None).Count();
在旧版本中,您必须自己过滤Session.ListDirectory
返回的文件:
Regex r = new Regex("^Del.*");
filesCount = session.ListDirectory(DataFile.sRemoteDirectory).Files
.Where(x => !x.IsDirectory)
.Where(x => r.Match(x.Name))
.Count()
请参阅官方示例Listing files matching wildcard(尽管在PowerShell中)。
答案 1 :(得分:0)
这就是我做的,它的工作原理!希望有人帮助这段代码,我使用正则表达式,其中receivepattern是使用的模式:
receivepattern = "^[\\d\\w]*" + receivepattern;
r = new Regex(receivepattern);
filesCount = session.ListDirectory(DataFile.sRemoteDirectory).Files.Where(x => !x.IsDirectory).Where(x => r.IsMatch(x.Name)).Count();