如何使用FTP获取基于模式匹配的文件列表?

时间:2017-06-11 14:34:46

标签: c# .net ftp

我需要从FTP服务器获取文件列表。

FTP服务器有超过10,000个文件。

我只需要以ABC...开头的文件(类似于10个文件)。 但是新文件每10分钟就会增加一次。

所以我只需要获取以ABC开头的文件,这些文件是在过去10分钟内创建的。

我如何实现这一目标?我可以从C#本地执行此操作吗?

到目前为止,我已经看到了,我可以连接到FTP服务器,获取所有文件的列表并检查每个文件的名称...这似乎需要很长时间才能增加文件数量...

TA

1 个答案:

答案 0 :(得分:1)

一般来说,除了你所知道的方式之外别无他法:检索所有文件的列表并在本地过滤它们。

但许多服务器支持列表的非标准/专有过滤。

如果您很幸运并且您的FTP服务器支持此功能,您可以使用文件掩码仅检索文件的子集。在你的情况下,面具通常会像ABC*。大多数主要FTP服务器都支持*模式。

FtpWebRequest request =
    (FtpWebRequest)WebRequest.Create("ftp://ftp.example.com/remote/path/ABC*");
request.Credentials = new NetworkCredential("username", "password");  
request.Method = WebRequestMethods.Ftp.ListDirectory;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
Console.WriteLine(reader.ReadToEnd());

有关常见FTP服务器支持模式的部分列表,请参阅我对FTP directory partial listing with wildcards的回答。