2013-01-31 18 views
10

biegnę czek aby sprawdzić, czy katalog istnieje na moim serwerze FTP:Sprawdź, czy katalog istnieje na serwerze FTP

public bool DirectoryExists(string directory) 
    { 
     bool directoryExists; 

     var request = (FtpWebRequest)WebRequest.Create(directory); 
     request.Method = WebRequestMethods.Ftp.ListDirectory; 
     request.Credentials = new NetworkCredential("user", "pass"); 

     try 
     { 
      using (request.GetResponse()) 
      { 
       directoryExists = true; 
      } 
     } 
     catch (WebException) 
     { 
      directoryExists = false; 
     } 

     return directoryExists; 
    } 

w tym przypadku:

directory = @"ftp://ftp.example.com/Rubicon"; 

na moim serwerze, I mieć folder o nazwie Rubicon1. Powoduje to, że mój czek zwraca true. Jak mogę się upewnić, że to się nie powiedzie, chyba że dokładnie pasuje do nazwy katalogu?

+1

można uzyskać listę katalogów w rodzicem? Może to ukryte – ericosg

+0

Zobacz to: http://stackoverflow.com/questions/265953/how-can-you-easily-check-if-access-is-denied-for-a-file-in-net/265958#265958 Rozumowanie dotyczy każdego zmiennego zasobu, który zdecydowanie obejmuje udziały FTP. –

+0

@ericosg linii gdzie mówi 'Create' jest do tworzenia żądania internetową FTP, a nie rzeczywisty katalog FTP – GolfWolf

Odpowiedz

6

pomyślnie rozwiązać ten problem poprzez zmianę mój katalog być:

directory = @"ftp://ftp.example.com/Rubicon/";