Usuário com melhor resposta
FTP Lista de arquivos

Pergunta
-
Olá
Gente, eu preciso pegar uma lista de arquivos via FTP. Estou conseguindo só que preciso também da data e tamanho dos arquivos:
Public Function GetFileList(ByVal host As String, ByVal username As String, ByVal password As String, ByVal currentdirectory As String) As List(Of String) Dim oFTP As FtpWebRequest = CType(FtpWebRequest.Create(host & currentdirectory), FtpWebRequest) oFTP.Credentials = New NetworkCredential(username, password) oFTP.KeepAlive = True oFTP.Method = WebRequestMethods.Ftp.ListDirectory Dim response As FtpWebResponse = CType(oFTP.GetResponse, FtpWebResponse) Dim sr As StreamReader = New StreamReader(response.GetResponseStream) Dim str As String = sr.ReadLine While str IsNot Nothing If str.EndsWith(".exe") Then ListBox1.Items.Add(str) End If str = sr.ReadLine End While sr.Close() response.Close() oFTP = Nothing End Function
Respostas
-
Eliseu,
Segue como você pode fazer. A única coisa que terá que mudar é o conteúdo da string linha que deve ter o valor que você capturar no response.
string linha = "-rw-r--r-- 1 semua semua 76786 Jan 17 23:24 backup_17012005488004540.vybkp"; string regex = @"^" + //# Start of line @"(?<dir>[\-ld])" + //# File size @"(?<permission>[\-rwx]{9})" + //# Whitespace \n @"\s+" + //# Whitespace \n @"(?<filecode>\d+)" + @"\s+" + //# Whitespace \n @"(?<owner>\w+)" + @"\s+" + //# Whitespace \n @"(?<group>\w+)" + @"\s+" + //# Whitespace \n @"(?<size>\d+)" + @"\s+" + //# Whitespace \n @"(?<month>\w{3})" + //# Month (3 letters) \n @"\s+" + //# Whitespace \n @"(?<day>\d{1,2})" + //# Day (1 or 2 digits) \n @"\s+" + //# Whitespace \n @"(?<timeyear>[\d:]{4,5})" + //# Time or year \n @"\s+" + //# Whitespace \n @"(?<filename>(.*))" + //# Filename \n @"$"; //# End of line var split = new Regex(regex).Match(linha); string dir = split.Groups["dir"].ToString(); string filename = split.Groups["filename"].ToString(); string tamanho = split.Groups["size"].ToString(); string data = split.Groups["day"].ToString() + " " + split.Groups["month"].ToString() + " às " + split.Groups["timeyear"].ToString();
Fonte: http://stackoverflow.com/questions/25246426/extracting-file-names-from-webrequestmethods-ftp-listdirectorydetails
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MVP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco- Editado André SeccoMVP quinta-feira, 19 de janeiro de 2017 13:24
- Marcado como Resposta Eliseu5 quinta-feira, 19 de janeiro de 2017 18:10
Todas as Respostas
-
Olá,
Ao invés de usar:
WebRequestMethods.Ftp.ListDirectory
Use:
WebRequestMethods.Ftp.ListDirectoryDetails
Isso porque esse outro, lhe provê mais detalhes. A partir disso coloque um break point no seu código e o debugue para ver as opções disponíveis.
Valeu!
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MVP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco -
-
Colocou break point no seu código e o debugou ele? Quais as propriedades aparecem no objeto response?
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MVP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco -
-
OK, então recomendo que veja essa live de como debugar seu código no visual studio:
https://www.youtube.com/watch?v=DurxzcJ37x8
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MVP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco -
-
Eliseu,
Segue como você pode fazer. A única coisa que terá que mudar é o conteúdo da string linha que deve ter o valor que você capturar no response.
string linha = "-rw-r--r-- 1 semua semua 76786 Jan 17 23:24 backup_17012005488004540.vybkp"; string regex = @"^" + //# Start of line @"(?<dir>[\-ld])" + //# File size @"(?<permission>[\-rwx]{9})" + //# Whitespace \n @"\s+" + //# Whitespace \n @"(?<filecode>\d+)" + @"\s+" + //# Whitespace \n @"(?<owner>\w+)" + @"\s+" + //# Whitespace \n @"(?<group>\w+)" + @"\s+" + //# Whitespace \n @"(?<size>\d+)" + @"\s+" + //# Whitespace \n @"(?<month>\w{3})" + //# Month (3 letters) \n @"\s+" + //# Whitespace \n @"(?<day>\d{1,2})" + //# Day (1 or 2 digits) \n @"\s+" + //# Whitespace \n @"(?<timeyear>[\d:]{4,5})" + //# Time or year \n @"\s+" + //# Whitespace \n @"(?<filename>(.*))" + //# Filename \n @"$"; //# End of line var split = new Regex(regex).Match(linha); string dir = split.Groups["dir"].ToString(); string filename = split.Groups["filename"].ToString(); string tamanho = split.Groups["size"].ToString(); string data = split.Groups["day"].ToString() + " " + split.Groups["month"].ToString() + " às " + split.Groups["timeyear"].ToString();
Fonte: http://stackoverflow.com/questions/25246426/extracting-file-names-from-webrequestmethods-ftp-listdirectorydetails
Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!
André Secco
Microsoft MVP & MSDN Tech Advisor
Blog: http://andresecco.com.br
GitHub: http://github.com/andreluizsecco
Twitter: @andre_secco- Editado André SeccoMVP quinta-feira, 19 de janeiro de 2017 13:24
- Marcado como Resposta Eliseu5 quinta-feira, 19 de janeiro de 2017 18:10
-