Проверка наличия нескольких файлов на FTP-сервере (C #) - PullRequest
1 голос
/ 04 января 2011

Мне нужен способ проверить, существует ли несколько файлов по заданному пути FTP.У меня будет список, в котором перечислены все имена файлов для проверки, и мне нужно будет проверить, все ли они существуют на сервере, и вернуть ошибки для тех, которые не существуют.Насколько это просто?

Спасибо

Ответы [ 2 ]

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

Самый безопасный подход - получить список файлов / каталогов для каждого каталога и проанализировать этот список.

       // Get the object used to communicate with the server.
        var request = WebRequest.Create(url);

        request.Credentials = new NetworkCredential(username, password);

        request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

        try
        {
            using(var response = request.GetResponse())
            {
                using(var stream = response.GetResponseStream())
                {
                    using(var reader = new StreamReader(stream))
                    {
                        while(reader.Peek() >= 0)
                        {
                             var line = reader.ReadLine();

                             // check if this is a file or directory, filter list etc..

                        }
                    }
                }
            }
        }
        catch
        {

        }

Другой, более простой вариант - попытаться получить файлы DateTimestamp и перехватить исключение, если файл не существует. Вам следует проверить исключение, поскольку его могут выбросить по другой причине.

        var request = WebRequest.Create(url);

        request.Credentials = new NetworkCredential(username, password);

        request.Method = WebRequestMethods.Ftp.GetDateTimestamp;

        try
        {
            using(var response = (FtpWebResponse)request.GetResponse())
            {
                // file exists
            }
        }
        catch(WebException e)
        {
            // file probably doesn't exits
        }
0 голосов
/ 04 января 2011

Что ж, если у вас есть доступ к серверу, вы можете написать свой скрипт там, а затем просто запросить этот скрипт и, следовательно, сделать только один запрос к серверу.В противном случае вам просто нужно проверить каждый файл, один за другим.

...