从具有特定搜索模式的FTP服务器获取文件列表

时间:2013-11-14 09:42:25

标签: c# .net c#-4.0 ftp ftpwebrequest

我想从具有特定搜索模式的FTP服务器获取文件列表(例如:将所有文件都设置为“* .txt”)并仅使用C#.net下载这些文件。

以下是从FTP服务器返回文件列表的代码,请提供完成所需任务所需的附加代码。

            FtpWebRequest reqFTP;
            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + coldata.Host + "/"));

            //("ftp://" + coldata.host  + "/"));
            reqFTP.UseBinary = true;
            reqFTP.Credentials = new NetworkCredential(coldata.Uid, coldata.Pwd);
            reqFTP.Method = WebRequestMethods.Ftp.ListDirectory;
            reqFTP.Timeout = System.Threading.Timeout.Infinite;
            reqFTP.Proxy = null;
            reqFTP.KeepAlive = true;
            reqFTP.UsePassive = true;
            FtpWebResponse res = (FtpWebResponse)reqFTP.GetResponse();
            response = reqFTP.GetResponse();
            reader = new StreamReader(response.GetResponseStream());
            string line = reader.ReadLine();
            while (line != null)
            {
                result.Append(line);
                result.Append("\n");
                line = reader.ReadLine();
            }
            // to remove the trailing '\n'
            result.Remove(result.ToString().LastIndexOf('\n'), 1);
            downloadRes = true;
            return result.ToString().Split('\n');

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用System.IO.Path.GetExtension,类似这样:

while (line != null)
{
    if (System.IO.Path.GetExtension(line) == "txt")
    {
        result.Append(line);
        result.Append("\n");
        line = reader.ReadLine();
    }
}

不完全符合您的要求,但您无法为FTP指定搜索模式,请参阅此处:

how to fetch a range of files from an FTP server using C#