2012-02-10 22 views
0

FTPサーバー上のすべてのディレクトリのリストを取得する必要がある場合、ディレクトリの数が非常に多く、取得に時間がかかりすぎて操作がタイムアウトに失敗するような状況に対処する方法はありますか?ftpディレクトリリストのタイムアウト。大量のサブディレクトリ

何とかそうするライブラリがあるのだろうか?

+0

のようなものを試してみてください、あなたは最初の5つのレベルを見つけ、LODの方法論を行うデータすなわちを制限することはできますか? –

+0

チャンクで入手できますか? 'a'で始まるフォルダをすべて表示し、 'b'で始まるものについては別のクエリを実行します。他の方法でクエリを分割することもできます(日付など) – Adrian

+0

キーはListDirectoryです。あなたはそれを行うことができます..おかげでハッピーフライデー – MethodMan

答えて

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

+0

に立ち往生しますそれが固まったと言うとき何を意味するのですか?より多くの情報を提供してもいいですか? .. – MethodMan

+0

ああ、いやいやいや...それは実際に働いた! – Agzam

関連する問題