title: How to download files from ftp from particular folder
body: <p>I create a windows form to download files from ftp from particular folder. </p>
  
  <p>The  user put the ftp details with username and password and folder name from which file will be download all the files. This will set by user one time and the all file from ftp describe folder will download everyday.<br>
   Example on FTP Folder Name is MyFolder where a.docx, b.docx etc it will download a.docx, b.docx everyday not other folder data need to download. </p>
  
  <p>For download and list of file I use below function. Can you please tell me what I am doing mistake or how can I do this . </p>
  
  <pre><code> private void downloadFileFromFTP()
   {
      try
      {
          string[] files = GetFileList();
          foreach (string file in files)
          {
              Download(file);
          }
      }
      catch (Exception ex)
      {
      }
  }
  </code></pre>
  
  <p>For Get The List of file </p>
  
  <pre><code>public string[] GetFileList()
  {
      string[] downloadFiles;
      StringBuilder result = new StringBuilder();
      WebResponse response = null;
      StreamReader reader = null;
      try
      {
          FtpWebRequest reqFTP;
          reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri( "ftp://" + txtftpAddress.Text + "/")); //txtFtpAddress.Text + "/" + txtFTPFolderName + "/" + file
          reqFTP.UseBinary = true;
          reqFTP.Credentials = new NetworkCredential("UserNm", "passwd");
          reqFTP.Method = WebRequestMethods.Ftp .ListDirectory;
          reqFTP.Proxy = null;
          reqFTP.KeepAlive = false;
          reqFTP.UsePassive = false;
          response = reqFTP.GetResponse();
          reader = new StreamReader(response.GetResponseStream());
          string line = reader.ReadLine();
          while (line != null)
          {
              result.Append(line);
              result.Append("\n");
              line = reader.ReadLine();
          }
          // to remove the trailing '\n'
          result.Remove(result.ToString().LastIndexOf('\n'), 1);
          return result.ToString().Split('\n');
      }
      catch (Exception ex)
      {
          if (reader != null)
          {
              reader.Close();
          }
          if (response != null)
          {
              response.Close();
          }
          downloadFiles = null;
          return downloadFiles;
      }
  }
  </code></pre>
  
  <p>download the file form the folder </p>
  
  <pre><code>private void Download(string file)
  {                       
      try
      {                             
          string uri = "ftp://" + txtFtpAddress.Text.Trim() + "/" + "txtlodername.Text" + "/" + file;
  
          Uri serverUri = new Uri(uri);
          if (serverUri.Scheme != Uri.UriSchemeFtp)
          {
              return;
          }       
          FtpWebRequest reqFTP;                
          reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(txtFtpAddress.Text + "/" + txtFTPFolderName + "/" + file));                                
          reqFTP.Credentials = new NetworkCredential("UserName", "mypass");                
          reqFTP.KeepAlive = false;                
          reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;                                
          reqFTP.UseBinary = true;
          reqFTP.Proxy = null;                 
          reqFTP.UsePassive = false;
          FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
          Stream responseStream = response.GetResponseStream();
          FileStream writeStream = new FileStream("D\\Temp"  + file, FileMode.Create);                
          int Length = 2048;
          Byte[] buffer = new Byte[Length];
          int bytesRead = responseStream.Read(buffer, 0, Length);               
          while (bytesRead &gt; 0)
          {
              writeStream.Write(buffer, 0, bytesRead);
              bytesRead = responseStream.Read(buffer, 0, Length);
          }                
          writeStream.Close();
          response.Close(); 
      }
      catch (WebException wEx)
      {
          MessageBox.Show(wEx.Message, "Download Error");
      }
      catch (Exception ex)
      {
          MessageBox.Show(ex.Message, "Download Error");
      }
  }
  </code></pre>