2012-02-10 66 views
0

当您需要获取FTP服务器上所有目录的列表时,有什么办法可以处理这种情况:目录数量如此之大,以至于需要太长的时间才能得到它,而且操作因超时而失败?ftp目录列表超时。大量的子目录

我不知道是否有一些图书馆让你这么做吗?

+0

能否限制仅数据即找到的第一个5级,并做了LOD方法? – 2012-02-10 15:49:33

+0

你能把它分成几块吗?说所有以'a'开头的文件夹,然后是以'b'开头的另一个查询,等等。也许你可以用其他方式拆分查询(即date) – Adrian 2012-02-10 15:49:53

+0

关键是ListDirectory我在下面发布了一个例子如何做到这一点..谢谢你快乐星期五 – MethodMan 2012-02-10 15:53:43

回答

2

尝试是这样的

 FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(uri); 
     ftpRequest.Credentials = new NetworkCredential("anonymous","[email protected]");//replace with your Creds 
     ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory; 
     FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse(); 
     StreamReader streamReader = new StreamReader(response.GetResponseStream()); 

     List<string> directories = new List<string>(); 

     string line = streamReader.ReadLine(); 
     while (!string.IsNullOrEmpty(line)) 
     { 
      directories.Add(line); 
      line = streamReader.ReadLine(); 
     } 

     streamReader.Close(); 

     // also add some code that will Dispose of the StreamReader object 
     // something like ((IDisposable)streanReader).Dispose(); 
     // Dispose of the List<string> as well 
      line = null; 
+0

它卡住(FtpWebResponse)ftpRequest.GetResponse() – Agzam 2012-02-10 16:08:55

+0

当你说它卡住了,你是什么意思..请提供更多的信息也可以包裹你的代码围绕Try Catch .. – MethodMan 2012-02-10 16:10:40

+0

哦不,不,不,不,实际上它工作! – Agzam 2012-02-10 16:12:50