在C#中使用FTP下载多个文件

时间:2012-09-25 20:25:20

标签: c# ftp

我需要编写一个完整下载服务器上给定目录的例程 - 其中的所有文件和目录。

现在我有一个列出目录内容的例程

public List<string> GetListOfFiles(string serverPath)
        {
            List<string> files = new List<string>();
            try
            {

                FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://" + serverPath);               
                request.Credentials = new NetworkCredential(_domain + "\\" + _username, _password);
                request.Method = WebRequestMethods.Ftp.ListDirectory;               


                FtpWebResponse response = (FtpWebResponse)request.GetResponse();
                StreamReader reader = new StreamReader(response.GetResponseStream());

                string line = reader.ReadLine();
                while (line != null)
                {
                    files.Add(line);                    
                    line = reader.ReadLine();
                }
                response.Close();

            }           
            catch (WebException ex)
            {
                FtpWebResponse response = (FtpWebResponse)ex.Response;
                string exMsg = string.Empty;

                switch (response.StatusCode)
                {
                    case FtpStatusCode.NotLoggedIn:
                        exMsg = "wrong username/password";
                        break;   


                    default:
                        exMsg = "The server is inaccessible or taking too long to respond.";
                        break;
                }   


                throw new Exception(exMsg);
            }
            return files;

        }

问题是我得到了文件和目录列表......所以像

file1.dll
file2.dll
dir1Name

有没有办法在列出时区分文件名和目录名?像一面旗帜?

1 个答案:

答案 0 :(得分:1)

不幸的是,返回的信息实际上是FTP服务器的功能,而不是框架。

您可以ListDirectoryDetails代替ListDirectory,它应该为您提供更详细的信息(包括每个文件是目录还是文件),但也需要特殊的解析,作为其格式,取决于FTP服务器。