hey im trying to download a zip or rar file dosen't matter from a ftp, lets say my program is inside a folder and i want the files to automatis download to the same folder and then i should be extracted from zip to normal files i have all ready made a code but im very bad with the directions so can any help me

Code:
Imports System.Net
Public Class MainForm

    Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Control.CheckForIllegalCrossThreadCalls = False
    End Sub

    Private Sub btnBrowseSave_Click(sender As Object, e As EventArgs) Handles btnBrowseSave.Click
        Dim newFolder As New FolderBrowserDialog
        If newFolder.ShowDialog = Windows.Forms.DialogResult.OK Then
            txtSavePath.Text = newFolder.SelectedPath
        End If
    End Sub

    Private Sub btnDownload_Click(sender As Object, e As EventArgs) Handles btnDownload.Click
        bWorker.RunWorkerAsync()
    End Sub

    Private Sub bWorker_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles bWorker.DoWork
        Dim buffer(1023) As Byte
        Dim bytesIn As Integer
        Dim totalBytesIn As Integer
        Dim output As IO.Stream
        Dim flLength As Integer
        Try
            Dim FTPRequest As FtpWebRequest = DirectCast(WebRequest.Create(txtFilePath.Text), FtpWebRequest)
            FTPRequest.Credentials = New NetworkCredential(txtFTPUsername.Text, txtFTPPassword.Text)
            FTPRequest.Method = Net.WebRequestMethods.Ftp.GetFileSize
            flLength = CInt(FTPRequest.GetResponse.ContentLength)
            lblFileSize.Text = flLength & " gb"
        Catch ex As Exception

        End Try
        Try
            Dim FTPRequest As FtpWebRequest = DirectCast(WebRequest.Create(txtFilePath.Text), FtpWebRequest)
            FTPRequest.Credentials = New NetworkCredential(txtFTPUsername.Text, txtFTPPassword.Text)
            FTPRequest.Method = WebRequestMethods.Ftp.DownloadFile
            Dim stream As System.IO.Stream = FTPRequest.GetResponse.GetResponseStream
            Dim OutputFilePath As String = txtSavePath.Text & "\" & IO.Path.GetFileName(txtFilePath.Text)
            output = System.IO.File.Create(OutputFilePath)
            bytesIn = 1
            Do Until bytesIn < 1
                bytesIn = stream.Read(buffer, 0, 1024)
                If bytesIn > 0 Then
                    output.Write(buffer, 0, bytesIn)
                    totalBytesIn += bytesIn
                    lblDownloadedBytes.Text = totalBytesIn.ToString & " gb"
                    If flLength > 0 Then
                        Dim perc As Integer = (totalBytesIn / flLength) * 100
                        bWorker.ReportProgress(perc)
                    End If
                End If
            Loop
            output.Close()
            stream.Close()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

       

    End Sub

    Private Sub bWorker_ProgressChanged(sender As Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles bWorker.ProgressChanged
        pBar.Value = e.ProgressPercentage
        lblPercent.Text = e.ProgressPercentage.ToString & "%"
    End Sub

    Private Sub bWorker_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bWorker.RunWorkerCompleted
        MsgBox("Download Complete!")

        

    End Sub



    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim sc As New Shell32.Shell()
        'Create directory in which you will unzip your files .
        IO.Directory.CreateDirectory(".")
        'Declare the folder where the files will be extracted
        Dim output As Shell32.Folder = sc.NameSpace(".")
        'Declare your input zip file as folder  .
        Dim input As Shell32.Folder = sc.NameSpace("./test.zip")
        'Extract the files from the zip file using the CopyHere command .
        output.CopyHere(input.Items, 4)
    End Sub
End Class