2011-01-04 3 views
1

Мне нужен способ проверить, существует ли несколько файлов на данном FTP-пути. У меня будет список, в котором перечислены все имена файлов для проверки, и мне нужно будет проверить, все ли они существуют на сервере, и возвращать ошибки для тех, которые этого не делают. Как легко это?Проверка наличия нескольких файлов на FTP-сервере (C#)

Благодаря

ответ

0

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

 // 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 
     { 

     } 

Another- проще - вариант будет пытаться извлечь файлы 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

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

 Смежные вопросы

  • Нет связанных вопросов^_^