Попытка вернуть имя самого старого файла на FTP-сайте в C # - PullRequest
1 голос
/ 31 января 2011

Вот что у меня есть:

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 Ответ

1 голос
/ 31 января 2011

Протокол FTP не определяет метод поиска файлов на основе их даты, поэтому вам придется работать со списком файлов, которые вы получаете.

Поскольку форматирование строки может отличаться от одного ftp-сервера додругой, самый безопасный вариант - использовать метод WebRequestMethods.Ftp.GetDateTimestamp для каждого файла.

Для этого, конечно, потребуется несколько циклических переходов, что может или не может быть приемлемо в вашем случае.Если вам нужно проанализировать вывод списка, может помочь Indy проект , поскольку он может анализировать практически все известные форматы вывода ftp.

...