1.11M Members

Opening FTP Read Streams

 
0
 

Here are two examples of opening read streams to files on an FTP server.
One example uses the FtpWebRequest method.
One example uses the WebClient method.

Here is a method of testing those functions:

using System;
using System.Diagnostics;
using System.IO;
using System.Net;

namespace UseFtpStreamExample
{
   using FtpReadStreams;
   class Program
   {
      static void Main(string[] args)
      {
         string strError = "";

         string strFtpUri =
#if !DEBUG
            "ftp://ftp.myServer.com/SomeFile.txt";
#else
            "ftp://download.textpad.com/welcome.msg";
#endif

         // Be sure to open an debug output window to see file contents
         if (!CFtpReadStream.DoWebRequestExample(strFtpUri, ref strError))
         {
            Trace.WriteLine("Could not read WR: " + strError);
            return;
         }

         // Be sure to open an debug output window to see file contents
         if (!CFtpReadStream.DoWebClientExample(strFtpUri, ref strError))
         {
            Trace.WriteLine("Could not read WC: " + strError);
            return;
         }

         Trace.WriteLine("Finished");
      }
   }
}
using System;
using System.Diagnostics;
using System.IO;
using System.Net;

namespace FtpReadStreams
{
   public class CFtpReadStream
   {
      /// <summary>
      /// Open a file for reading (as text) and display it in debug window.
      /// This example uses the WebClient
      /// </summary>
      /// <param name="strFtpUri">The full URI to the file</param>
      /// <param name="strError">ref to any errors returned</param>
      /// <returns>bool (true if success)</returns>
      public static bool DoWebClientExample(string strFtpUri, ref string strError)
      {
         bool blnRetVal = true;
         WebClient wc = new WebClient();
         try
         {
            using (StreamReader fileIn = new StreamReader(wc.OpenRead(strFtpUri)))
            {
               string strData = "";
               while (!fileIn.EndOfStream)
               {
                  strData = fileIn.ReadLine();
                  Trace.WriteLine(strData);
               }

               fileIn.Close();
            }
         }
         catch (Exception exc)
         {
            blnRetVal = false;
            strError = exc.Message;
         }

         return blnRetVal;
      }

      /// <summary>
      /// Open a file for reading (as text) and display it in debug window.
      /// This method uses the FtpWebRequest
      /// </summary>
      /// <param name="strFtpUri">The full URI to the file</param>
      /// <param name="strError">ref to any errors returned</param>
      /// <returns>bool (true if success)</returns>
      public static bool DoWebRequestExample(string strFtpUri, ref string strError)
      {
         bool blnRetVal = true;
         try
         {
            FtpWebRequest ftp = (FtpWebRequest)WebRequest.Create(strFtpUri);
            ftp.Method = WebRequestMethods.Ftp.DownloadFile;
            using (FtpWebResponse response = (FtpWebResponse)ftp.GetResponse())
            {
               using (StreamReader fileIn = new StreamReader(response.GetResponseStream()))
               {
                  string strData = "";
                  while (!fileIn.EndOfStream)
                  {
                     strData = fileIn.ReadLine();
                     Trace.WriteLine(strData);
                  }
                  //
                  fileIn.Close();
               }
               //
               response.Close();
            }
         }
         catch (Exception exc)
         {
            blnRetVal = false;
            strError = exc.Message;
         }

         return blnRetVal;
      }
   }
}
Isn't it about time forums rewarded their contributors?

Earn rewards points for helping others. Gain kudos. Cash out. Get better answers yourself.

It's as simple as contributing editorial or replying to discussions labeled or OP Kudos

You
This is an OP Kudos discussion and contributors may be rewarded
Post:
Start New Discussion
View similar articles that have also been tagged: