2013-01-31 18 views
10

sto correndo un controllo per verificare se una directory presente sul mio server FTP:Verificare directory esiste sul server 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; 
    } 

In questo caso:

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

Sul mio assistente, ho avere una cartella denominata Rubicon1. Ciò causa che il mio assegno restituisca true. Come posso assicurarmi che non funzioni a meno che non corrisponda esattamente al nome della directory?

+1

è possibile ottenere una lista di directory del genitore? forse è nascosto – ericosg

+0

Vedi questo: http://stackoverflow.com/questions/265953/how-can-you-easily-check-if-access-is-denied-for-a-file-in-net/265958#265958 Il ragionamento si applica a qualsiasi risorsa volatile, che include sicuramente le condivisioni FTP. –

+0

@ericosg la riga in cui si dice che 'Create' è per la creazione della richiesta web FTP, non l'effettiva Directory FTP – GolfWolf

risposta

6

Ho risolto con successo il problema modificando il mio indice di essere:

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