Array
(
)

verificando a existência de subpastas em um diretorio FTP

Max
|
MVP
    14 jan 2013

Hoje tem essa estrutura para criar pasta no FTP. Só que não consigo verificar se existem subpastas dentro de um determinado diretório.

#Código

 public static void CriarPastaFTP(string Pasta)
        {
            try
            {
                NetworkCredential Credentials = new NetworkCredential(UserSession.TabuladorController.FTPUsuario, UserSession.TabuladorController.FTPSenha);

                FtpWebRequest Request = (FtpWebRequest)FtpWebRequest.Create(UserSession.TabuladorController.FTPEndereco);
                Request.Credentials = Credentials;
                Request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
                WebResponse Response = Request.GetResponse();

                StreamReader reader = new StreamReader(Response.GetResponseStream());
                bool ExistePasta = reader.ReadToEnd().Contains(Pasta);

                if (!ExistePasta)
                {
                    Request = (FtpWebRequest)FtpWebRequest.Create(UserSession.TabuladorController.FTPEndereco + Pasta);
                    Request.Credentials = Credentials;
                    Request.Method = WebRequestMethods.Ftp.MakeDirectory;
                    Response = Request.GetResponse();
                }
                Response.Close();
            }
            catch (Exception)
            {
                MessageBox.Show("Verifique se o endereço existe!");
            }
        }

Como listar os subdiretorios?
Muito obrigado.

Robson Robsonalves.net
   - 14 jan 2013

vc vai ter que fazer recursão.

Veja:
http://stackoverflow.com/questions/13121196/ftp-directory-subdirectory-listing-using-edtftpnet-c

Max
|
MVP
    14 jan 2013


Nesse Exemplo, percorro todos os diretórios do FTP, mas não consego acessar os subdiretórios.

#Código

FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(uri);
ftpRequest.Credentials =new NetworkCredential("anonymous","janeDoe@contoso.com");
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse();
StreamReader streamReader = new StreamReader(response.GetResponseStream());

List<string> directories = new List<string>();

string line = streamReader.ReadLine();
while (!string.IsNullOrEmpty(line))
{
    directories.Add(line);
    line = streamReader.ReadLine();
}

streamReader.Close();[


Tem algum metódo, que eu posso acessar o subdiretório?

Robson Robsonalves.net
   - 15 jan 2013

Cara, eu nunca fiz isso, mas li que o ListDirectory resolve isso:

http://www.copyandwaste.com/posts/view/parsing-webrequestmethodsftplistdirectorydetails-and-listdirectory/