pessoal, tenho este código abaixo que é o UPDATE do meu programa
ele lista os arquivos do ftp e copia para a maquina.
só que o problema é q ele copia tambem as subpastas, e isso faz com que a atualização de erro.
por favor, alguém me da uma ideia de como alterar o codigo para que ele não copie as subpastas, copiar somente os arquivos da raiz.
obrigado
segue o codigo:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'return a simple list of filenames in directory
Timer1.Stop()
Try
ProgressBar1.Value = 25
Dim buffer(20000000) As Byte
Dim read As Integer = 0
Dim i As Integer
Dim FileNames As String
Dim Aux As String
Dim ftp As FtpWebRequest = CType(FtpWebRequest.Create("ftp://SSA-RS-ACF01/"), FtpWebRequest)
'CaminhoAplicacao.Text = Application.ExecutablePath.Replace("SGR_Update.EXE", "")
CaminhoAplicacao.Text = Application.ExecutablePath.Remove(Application.ExecutablePath.Length - 14, 14)
'CaminhoAplicacao.Text = "C:\DADOS\Teste\"
'' read de files at ftp folder
ftp.Method = Net.WebRequestMethods.Ftp.ListDirectory
Dim sr As New StreamReader(ftp.GetResponse.GetResponseStream())
FileNames = sr.ReadToEnd()
FTPFiles.Text = "Arquivos encontrados ..." & vbCrLf & FileNames
Me.Update()
FileNames = FileNames.Replace(vbCrLf, "|")
FTPFiles.Text = FTPFiles.Text & vbCrLf & vbCrLf & "Copiando arquivos..." & vbCrLf
ftp = Nothing
StatusUpdate.Text = "Baixando arquivos."
Me.Update()
For i = 0 To FileNames.Split("|").Count - 2
FTPFiles.Text = FTPFiles.Text & vbCrLf & FileNames.Split("|")(i)
Aux = CaminhoAplicacao.Text & FileNames.Split("|")(i)
ProgressBar1.Value = i * 100 / (FileNames.Split("|").Count - 2)
Dim targetFI = New FileInfo(Aux)
Dim ftp2 As FtpWebRequest = CType(FtpWebRequest.Create("ftp://SSA-RS-ACF01/SGR/" & FileNames.Split("|")(i)), FtpWebRequest)
ftp2.Method = Net.WebRequestMethods.Ftp.DownloadFile
ftp2.UseBinary = True
Using response As FtpWebResponse = CType(ftp2.GetResponse, FtpWebResponse)
Using responseStream As Stream = response.GetResponseStream
Using fs As FileStream = targetFI.OpenWrite
'Try
Do
read = responseStream.Read(buffer, 0, buffer.Length)
fs.Write(buffer, 0, read)
Loop Until read = 0
responseStream.Close()
fs.Flush()
fs.Close()
'Catch ex As Exception
' 'catch error and delete file only partially downloaded
' fs.Close()
' 'delete target file as it's incomplete
' targetFI.Delete()
' Throw
'End Try
End Using
responseStream.Close()
End Using
response.Close()
End Using
FTPFiles.Text = FTPFiles.Text & vbCrLf & targetFI.ToString()
Me.Update()
'targetFI = Nothing
Next
StatusUpdate.Text = "Atualização concluída."
Timer2.Interval = 5000
Timer2.Start()
Catch ex As Exception
If MsgBox("Não foi possível atualizar a versão do SGR. Deseja continuar com a versão antiga?", MsgBoxStyle.YesNo, "Erro") = MsgBoxResult.Yes Then
Process.Start(CaminhoAplicacao.Text & "SGR.EXE")
End If
Me.Close()
End Try
Question
cwarez
pessoal, tenho este código abaixo que é o UPDATE do meu programa
ele lista os arquivos do ftp e copia para a maquina.
só que o problema é q ele copia tambem as subpastas, e isso faz com que a atualização de erro.
por favor, alguém me da uma ideia de como alterar o codigo para que ele não copie as subpastas, copiar somente os arquivos da raiz.
obrigado
segue o codigo:
Link to comment
Share on other sites
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.