2011-01-31 43 views
1

這裏的FTP站點上返回最早的文件的名稱是我到目前爲止有:試圖在C#

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服務器而異,所以最安全的選擇是爲每個文件使用WebRequestMethods.Ftp.GetDateTimestamp方法。

這將需要多次往返,當然可能會或可能不會在您的情況下被接受。

如果您需要解析List輸出,Indy project可能會有所幫助,因爲它可以解析幾乎所有已知的ftp輸出格式。