2013-04-30 79 views
0

我有代码什么获取某个FTP目录的内容。在我测试过的一些服务器上,它工作正常。获取FTP目录内容的问题,如果它是空的

但是在一个服务器上,当我们尝试获得响应时,此方法会引发异常。

public static List<string> ListDirectory(string dirPath, string ftpUser, string ftpPassword) 
    { 
     List<string> res = new List<string>(); 

     FtpWebRequest request = (FtpWebRequest)WebRequest.Create(dirPath); 
     request.Method = WebRequestMethods.Ftp.ListDirectory; 
     request.Credentials = new NetworkCredential(ftpUser, ftpPassword); 
     request.KeepAlive = false; 

     FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 

     Stream responseStream = response.GetResponseStream(); 
     StreamReader reader = new StreamReader(responseStream); 
     while (!reader.EndOfStream) 
     { 
      res.Add(reader.ReadLine()); 
     } 
     reader.Close(); 
     response.Close(); 

     return res; 
    } 

在保持部分我有这样的事情

catch (WebException e) 
{ 
    FtpWebResponse response = (FtpWebResponse)e.Response; 
    /*in my case response.Status = ActionNotTakenFileUnavailableOrBusy*/ 
    .... 
} 

它的工作原理之前,但现在当文件夹为空失败。如果有什么有效的话。我可以用TotalCommander看到这个目录。

任何想法为什么?

+0

你被允许使用一个外部库,而不是内置类? – Steve 2013-04-30 14:48:39

+0

是的,我允许。但它需要很多改变。 – Vitalii 2013-04-30 15:07:42

+0

好的,我将使用CodePlex提供的免费System.Net.FtpClient添加一个示例。告诉我你是否可以使用它 – Steve 2013-04-30 15:20:28

回答

0

这是一个如何使用CodePlex提供的免费库System.Net.FtpClient获取远程目录列表的示例。
我已经在很多场合用它,在我看来,是更容易

public void GetListing() 
{ 
    using (FtpClient conn = new FtpClient()) 
    { 
     conn.Host = "your_ftp_site_url"; 
     conn.Credentials = new NetworkCredential("your_user_account", "your_user_password"); 
     foreach (FtpListItem item in conn.GetListing(conn.GetWorkingDirectory(), FtpListOption.Modify | FtpListOption.Size)) 
     { 
       switch (item.Type) 
       { 
        case FtpFileSystemObjectType.Directory: 
         Console.WriteLine("Folder:" + item.Name); 
         break; 
        case FtpFileSystemObjectType.File: 
         Console.WriteLine("File:" + item.Name); 
         break; 
      } 
     } 
    } 
} 

工作,你可以找到download from this pages

+0

不幸的是,我有一个例外,即“路径是正确的,但没有答案”。看起来和以前一样 – Vitalii 2013-04-30 15:52:48

相关问题