![](/img/trans.png)
[英]How to remove “.” and “..” files from remote directory with C# and WinSCP
[英]How to get the files of remote directory using a pattern with C# and WinSCP
我正在嘗試從具有FTP / SFTP連接的遠程服務器中獲取特定文件,而我遇到的問題是,我正在嘗試以特定模式獲取遠程目錄中的文件數。 我正在使用口罩,但不適用於我,它拋出異常:這就是我所擁有的
DataFile.sRemoteDirectory = "/user/ftpuser/test/";
receivepattern = "Del*";
filesCount =
session.ListDirectory(
session.EscapeFileMask(DataFile.sRemoteDirectory + receivepattern))
.Files.Where(x => !x.IsDirectory).Count();
Session.ListDirectory
方法不接受通配符,僅接受路徑。
由於WinSCP .NET程序集5.9,因此可以改用Session.EnumerateRemoteFiles
方法 :
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()
這就是我所做的,並且有效! 希望對某段代碼有所幫助,我使用了正則表達式,其中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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.