如题:
    现在FTP地址
    FTP://****.xicp.net/
    地址下面有文件夹A~C和文件abc.txt string ftpURI = "ftp://****.xicp.net/";
            string ftpUserID = "abc";
            string ftpPassword = "abc";
            string[] downloadFiles;
            try
            {
                StringBuilder result = new StringBuilder();
                FtpWebRequest ftp;
                ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));
                ftp.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                ftp.Method = WebRequestMethods.Ftp.ListDirectory;
                WebResponse response = ftp.GetResponse();                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
                string line = reader.ReadLine();
                //string fn = System.Web.HttpUtility.UrlDecode(line, System.Text.Encoding.GetEncoding("GB2312"));                while (line != null)
                {
                    result.Append(line);
                    result.Append("\n");
                    line = reader.ReadLine();
                }
                result.Remove(result.ToString().LastIndexOf("\n"), 1);
                reader.Close();
                response.Close();   现在用上面方法只能得到abc.txt
   如何遍历得到A~C文件夹?c#

解决方案 »

  1.   

                // Get the object used to communicate with the server.
                FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.contoso.com/");
                request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;            // This example assumes the FTP site uses anonymous logon.
                request.Credentials = new NetworkCredential ("anonymous","[email protected]");            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
        
                Stream responseStream = response.GetResponseStream();
                StreamReader reader = new StreamReader(responseStream);
                Console.WriteLine(reader.ReadToEnd());            Console.WriteLine("Directory List Complete, status {0}", response.StatusDescription);
        
                reader.Close();
                response.Close();
      

  2.   

      public string[] GetDirectoryList(string url)
            {
                string[] directory = GetFilesDetailList(url);
                string[] dir = new string[directory.Length];
                int count = 0;
                  if (directory == null)
                    return null;            //WIN
                foreach (string str in directory)
                {
                    if (str.Trim().Contains("<DIR>"))
                    { 
                        dir[count] = str.Substring(str.IndexOf("<DIR>") + 5).Trim();                    count = count + 1;
                    }
                }            if (count > dir.Length)
                {
                    return dir;
                }
     
                //Sevr-U
                foreach (string str in directory)
                {
                    if (str.Length > 0 && str.Trim().Substring(0, 1).ToUpper() == "D")
                    {
                       dir[count] = str.Substring(54).Trim();
                       count = count + 1;
                    }
                }            return dir;
                 
            }        /// <summary>
            /// 获取ftp文件详细信息
            /// </summary>
            /// <param name="url">ftp服务器地址加文件名如:(ftp://10.0.0.10/1.xml)</param>
            /// <returns>返回文件详细信息</returns>
            public string[] GetFilesDetailList(string url)
            {
                
                try
                {
                    StringBuilder result = new StringBuilder();
                    FtpWebRequest ftp;
                    ftp = (FtpWebRequest)FtpWebRequest.Create(new Uri(url));
                    ftp.Credentials = new NetworkCredential(m_UserName, m_Password);
                    ftp.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
                    WebResponse response = ftp.GetResponse();
                    StreamReader reader = new StreamReader(response.GetResponseStream());
                    string line = reader.ReadLine();                if (line == null || line.Length < 0)
                        return null;                while (line != null)
                    {
                        result.Append(line);
                        result.Append("\n");
                        line = reader.ReadLine();
                    }                result.Remove(result.ToString().LastIndexOf("\n"), 1);
                    reader.Close();
                    response.Close();
                    return result.ToString().Split('\n');
                }
                catch (Exception ex)
                { 
                    throw ex;            }
            }