Несколько запросов FTP - C # - PullRequest
       3

Несколько запросов FTP - C #

0 голосов
/ 16 декабря 2010

Я пытаюсь получить список файлов в определенном каталоге, а затем хочу проверить даты их последнего изменения.

Первоначальный запрос работает нормально:

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 никогда не устанавливается на что-либо.Я хотел бы упаковать это в класс, чтобы избежать ужасного дублирования кода, но сейчас я бы согласился на возможность извлечения данных, которые меня интересуют.

1 Ответ

0 голосов
/ 01 января 2011

Вот мое грубое решение:

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);
}

И словарь, который связывает дату с каждым файлом для дальнейшей обработки. Проблема с моим первоначальным решением была связана с тем, как я обрабатывал ответ.

...