2010-12-16 10 views
0

特定のディレクトリにファイルのリストを取得しようとしていますが、最後に変更した日付を確認したいのですが、複数のFTPリクエスト - C#

初期の要求が正常に動作します:

FtpWebRequest request; 

request = (FtpWebRequest)WebRequest.Create(new Uri(FtpPath)); 
request.Credentials = new NetworkCredential("username", "password"); 

request.Method = WebRequestMethods.Ftp.ListDirectory; 

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

string FileNames = reader.ReadToEnd(); 

そして、いくつかの処理の後、私は私が興味のファイルを選択し、そのタイムスタンプを取得しよう。以下は、ループ内で起こる:

request = (FtpWebRequest)WebRequest.Create(new Uri(FtpPath + Files[i])); 
request.Credentials = new NetworkCredential("username", "password"); 

request.Method = WebRequestMethods.Ftp.GetDateTimestamp; 

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

FileDates = reader.ReadToEnd(); 

マイFileDates変数が何に設定されることは決してありません。ここで私は、恐ろしいコードの重複を避けるために、クラスでこれをパッケージ化してみたいけど、今の私は、私が興味データを取得することができることのために解決します

+0

FtpPathの最後には/がありますか? –

+0

@Scott Chamberlainはいあります。 – Radu

答えて

0

私のラフなソリューションです:。

FtpWebRequest request = (FtpWebRequest)WebRequest.Create(new Uri(FtpPath)); 
reuest.Credentials = new NetworkCredential("user", "password"); 
request.Method = WebRequestMethods.Ftp.ListDirectory; 

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

string FileNames = reader.ReadToEnd(); 
string[] Files = Regex.Split(FileNames,"\r\n"); 

今、私はすべてのファイル名

Dictionary<string, DateTime> Dates = new Dictionary<string, DateTime>(); 

for (int i = 0; i <= Files.Length - 1; i++) 
{ 
    request = (FtpWebRequest)WebRequest.Create(new Uri(FtpPath + Files[i])); 
    request.Credentials = new NetworkCredential("user", "password"); 
    request.Method = WebRequestMethods.Ftp.GetDateTimestamp; 
    response = (FtpWebResponse)request.GetResponse(); 

    DateTime FileDate = response.LastModified; 
    Dates.Add(Files[i], FileDate); 
} 

、さらなる処理のために、各ファイルに日付を関連付ける辞書の配列を持っています。私の初期の解決策の問題は、私が応答を扱っていたやり方と関係していました。