Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Matuzalém Teles

Números de Pastas na Hospedagem FTP VB.NET

Recommended Posts

Ai Galera quem pode min ajudar. Depois de tanta pesquisa acabei achando estes scripts, era em C# coloquei para VB.NET agora esta dando erro, tem algo de errado no script ? Ele servira para contar quantas pastas tem e um determinado arquivo.

 

Ajuda PLz

    Public Function response() As FtpWebResponse
        Dim liArquivos As New List(Of String)()
        'Cria comunicação com o servidor
        'Definir o diretório a ser listado
        Dim request As FtpWebRequest = CType(WebRequest.Create("ftp://servidor.com.br/images/"), FtpWebRequest)
        'Define que a ação vai ser de listar diretório
        request.Method = WebRequestMethods.Ftp.ListDirectoryDetails
        'Credenciais para o login (usuario, senha)
        request.Credentials = New NetworkCredential("usuario", "senha")
        'modo passivo
        request.UsePassive = True
        'dados binarios
        request.UseBinary = True
        'setar o KeepAlive para true
        request.KeepAlive = True

        'Criando a Stream para pegar o retorno
        Dim responseStream As Stream = response.GetResponseStream()
        Using reader As New StreamReader(responseStream)
            'Adicionar os arquivos na lista
            liArquivos = reader.ReadToEnd().Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Count
        End Using

    End Function

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui

 

"liArquivos = reader.ReadToEnd().Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries).Count"

 

Não to conseguindo mostra em uma label o resultado de pastas que tem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está adicionando as Strings na lista? Você não pode simplesmente igualar uma lista a um reader, você precisa saber se o retorno deste reader é uma lista de strings também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se entende direito, olha só como fico.

O código

    Public Function response() As FtpWebResponse
        Dim liArquivos As New List(Of String)()
        'Cria comunicação com o servidor
        'Definir o diretório a ser listado
        Dim request As FtpWebRequest = CType(WebRequest.Create("ftp://servidor.com.br/images/"), FtpWebRequest)
        'Define que a ação vai ser de listar diretório
        request.Method = WebRequestMethods.Ftp.ListDirectoryDetails
        'Credenciais para o login (usuario, senha)
        request.Credentials = New NetworkCredential("usuario", "senha")
        'modo passivo
        request.UsePassive = True
        'dados binarios
        request.UseBinary = True
        'setar o KeepAlive para true
        request.KeepAlive = True

        'Criando a Stream para pegar o retorno
        Dim responseStream As Stream = response.GetResponseStream()
        Using reader As New StreamReader(responseStream)
            'Adicionar os arquivos na lista
            Form5.Label14.Text = reader.ReadLine
        End Using

    End Function

Ou este:

???

   Private Function teste()
        Dim fName As New ArrayList()

        Dim result As New StringBuilder()

        'create the directory
        Dim requestDir As FtpWebRequest = CType(FtpWebRequest.Create(New Uri(Directory)), FtpWebRequest)
        requestDir.Method = WebRequestMethods.Ftp.ListDirectory
        requestDir.Credentials = New NetworkCredential(FTP_USER_NAME, FTP_PASSWORD)
        requestDir.UsePassive = True
        requestDir.UseBinary = True
        requestDir.KeepAlive = False
        requestDir.Proxy = Nothing
        Dim response As FtpWebResponse = CType(requestDir.GetResponse(), FtpWebResponse)
        Dim ftpStream As Stream = response.GetResponseStream()
        Dim reader As New StreamReader(ftpStream, Encoding.ASCII)


        Do While Not reader.EndOfStream
            fName.Add(reader.ReadLine().ToString())
            Form5.Label14.Text = reader.ReadLine().ToString()
        Loop

        response.Close()
        ftpStream.Close()

    End Function

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu consegue fazer conta só que agora, ele mostra conta parece todos os arquivos que tem e sub pastas quero que ele só conte a patas e não conte a sub pasta.

 

Ele esta fazendo contagem estranhas e loucas '-'

 

Olha o codigo:

       Dim fName As New ArrayList()

        Dim result As New StringBuilder()

        'create the directory
        Dim requestDir As FtpWebRequest = CType(FtpWebRequest.Create(New Uri(My.Settings.numera & TextBox3.Text & "/Match ID/" & TextBox1.Text & "/")), FtpWebRequest)
        requestDir.Method = WebRequestMethods.Ftp.ListDirectory
        requestDir.Credentials = New NetworkCredential(My.Settings.user, My.Settings.senha)
        requestDir.UsePassive = True
        requestDir.UseBinary = True
        requestDir.KeepAlive = False
        requestDir.Proxy = Nothing
        Dim response As FtpWebResponse = CType(requestDir.GetResponse(), FtpWebResponse)
        Dim ftpStream As Stream = response.GetResponseStream()
        Dim reader As New StreamReader(ftpStream, Encoding.ASCII)


        Do While Not reader.EndOfStream
            Form5.Label14.Text = reader.ReadLine.Count
        Loop

        response.Close()
        ftpStream.Close()

Compartilhar este post


Link para o post
Compartilhar em outros sites

A contagem é encima do fName e não do reader, então seria:

 

Form5.Label14.Text = fName.Count

 

Fora do while, dentro do while você precisaria ir adicionando os arquivos no arraylist. Você consegue mostrar os nomes das pastas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz o que você colocou e não conta quantas pastas tem no diretório.

Fiz outro teste para ver se listava a pastas com o código

 Do While Not reader.EndOfStream
            Label4.Text = reader.ReadLine().ToString()
        Loop

Ele só jogo um arquivo que era o único na pasta. mais não listo a pasta que tinha .

fiz com o

Form5.Label14.Text = fName.Count

fora da While mais não aconteceu nada.

 

No diretório que mandei ver contar.

Tem uma Pasta e um Arquivo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entende muito como faria ?

 

 

Quero pedir desculpa pelo Flode desculpa mesmo.

 

 

E que não da para editar mais a ultima postagem, então Khaos eu adicionei a lista para fazer a contagem agora conta tudo normal mais o que acontece e que esta adicionando mais 2 pastas na contagem sendo que só tem 3 ai na contagem fica 5, fiz vários teste é sempre conta mais 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele está contando a pasta também, acredito que este seja o problema. Você vai precisar ver como distinguir uma pasta de um arquivo, se você quiser contar as pastas também então está certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.