2011-01-31 8 views
1

C#でFTPサイト上で最も古いファイルの名前を返すようにしようとすると、私がこれまで持っているものだ。これはあるようです何はここ

FtpWebRequest reqFTP; 
string returnString = ""; 

Uri serverFile = new Uri(ftpServer + "/" + dirName); 

reqFTP = (FtpWebRequest)FtpWebRequest.Create(serverFile); 
reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails; 
reqFTP.UseBinary = true; 
reqFTP.Credentials = new NetworkCredential(ftpUser, ftpPass); 
FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); 

Stream ftpStream = response.GetResponseStream(); 
long cl = response.ContentLength; 
int bufferSize = 2048; 
int readCount; 
byte[] buffer = new byte[bufferSize]; 

readCount = ftpStream.Read(buffer, 0, bufferSize); 
while (readCount > 0) 
{ 
    returnString += System.Text.ASCIIEncoding.ASCII.GetString(buffer); 
    readCount = ftpStream.Read(buffer, 0, bufferSize); 
} 

がされているすべてのファイルの詳細を私にフォーマットされた文字列を返しますディレクトリに保存します。単一のファイル(作成日のような基準に基づいて)を取得することも、この文字列を解析するライブラリがありますか?

答えて

1

FTPプロトコルは、日付に基づいてファイルを検索する方法を定義していないため、取得するファイルのリストを操作する必要があります。

文字列のフォーマットがftp-serverごとに異なる場合があるため、最も安全なオプションは、各ファイルに対してWebRequestMethods.Ftp.GetDateTimestampメソッドを使用することです。

これには複数回の往復が必要となりますが、これはあなたの場合には受け入れられるかもしれません。

List出力を解析する必要がある場合は、実質的にすべての既知のftp出力形式を解析できるので、Indy projectが役に立ちます。