Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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.
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.
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
A segunda função funcionaria, pelo menos na minha observação.
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()
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?
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.
Você vai precisar adicionar os nomes dentro do ArrayList para ele poder contar.
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
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.
Qual erro?