Provides options to determine how files and directories will be transferred in a multi-file operation.

      Syntax

      public sealed class TransferOptions : MultiFileOperationOptions

      Examples

      FTP Examples

      Shows how to use Download method to download files and directories on an FTP server. The download process is controlled with handlers of the TransferConfirm and Progress events.

      using System;
      using ComponentPro.IO;
      using ComponentPro.Net;
      
      ...
      
      private static Ftp _client;
      static void Main()
      {
          // Create a new class instance. 
          Ftp client = new Ftp();
          _client = client;
      
          // Connect to the FTP server. 
          client.Connect("demo.componentpro.com");
      
          // Authenticate. 
          client.Authenticate("test", "test");
      
          // ... 
       
          client.TransferConfirm += client_TransferConfirm;
          client.Progress += client_Progress;
      
          try 
          {
              TransferOptions opt = new TransferOptions("*.*", FileOverwriteMode.Confirm);
      
              // Get all directories, subdirectories, and files in remote folder '/myfolder' to 'c:\myfolder'. 
              client.Download("/myfolder", "c:\\myfolder", opt);
          }
          catch (Exception exc)
          {
              Console.WriteLine("Error: " + exc.Message);
          }
      
          // ... 
       
          // Disconnect. 
          client.Disconnect();
      }
      
      /// <summary> 
      /// This method is raised when user clicks on 'Cancel' button on the form. 
      /// </summary> 
      protected static void btnCancel_Click(object sender, EventArgs e)
      {
          // Cancel the download operation when user clicks on the button. 
          _client.Cancel();
      }
      
      static void client_Progress(object sender, ComponentPro.IO.FileSystemProgressEventArgs e)
      {
          // Show progress info. 
          Console.WriteLine("Current File: %{0} completed", e.Percentage);
          Console.WriteLine("Total: %{0} completed", e.TotalPercentage);
      
          switch (e.State)
          {
              case TransferState.StartDownloadingFile:
                  if (e.SourcePath.EndsWith(".exe"))
                  {
                      // Skip all .exe files 
                      e.Skip = true;
                  }
                  else if (e.SourcePath.StartsWith("/MyFolder"))
                  {
                      // Change the source file path if it starts with "/MyFolder" 
                      e.SourcePath = e.SourcePath.Replace("/MyFolder", "/MySecondFolder");
                  }
                  break;
          }
      }
      
      static void client_TransferConfirm(object sender, ComponentPro.IO.TransferConfirmEventArgs e)
      {
          if (e.Exception != null)
              Console.WriteLine("Error: " + e.Exception.Message);
      
          if (e.ConfirmReason == TransferConfirmReason.FileAlreadyExists)
          {
              // Skip the existing file. 
              e.NextAction = TransferConfirmNextActions.Skip;
          }
      
          Console.Write("Do you want to (r)etry or (s)kip?");
          string key = Console.ReadLine();
          if (key == "r")
              e.NextAction = TransferConfirmNextActions.Retry;
          else if (key == "s")
              e.NextAction = TransferConfirmNextActions.Skip;
          else 
              // Cancel the operation. 
              e.NextAction = TransferConfirmNextActions.Cancel;
      }

      SFTP Examples

      Shows how to use Upload methods to upload files. The system will skip existing files on the server.

      using System;
      using ComponentPro.IO;
      using ComponentPro.Net;
      
      ...
      
      public void DoUpload()
      {
          // Create a new class instance. 
          Sftp client = new Sftp();
      
          // Connect to the SFTP server. 
          client.Connect("demo.componentpro.com");
      
          // Authenticate. 
          client.Authenticate("test", "test");
      
          // ... 
       
          client.TransferConfirm += client_TransferConfirm;
          client.Progress += client_Progress;
      
          try 
          {
              TransferOptions opt = new TransferOptions("*.*", FileOverwriteMode.Confirm);
      
              // Get all directories, subdirectories, and files in local folder 'c:\myfolder' to remote folder '/myfolder'. 
              client.Upload("c:\\myfolder", "/myfolder", opt);
          }
          catch (Exception exc)
          {
              Console.WriteLine("Error: " + exc.Message);
          }
      
          // ... 
       
          // Disconnect. 
          client.Disconnect();
      }
      
      void client_Progress(object sender, ComponentPro.IO.FileSystemProgressEventArgs e)
      {
          // Show progress info. 
          Console.WriteLine("Current File: %{0} completed", e.Percentage);
          Console.WriteLine("Total: %{0} completed", e.TotalPercentage);
      
          switch (e.State)
          {
              case TransferState.StartUploadingFile:
                  if (e.SourcePath.EndsWith(".exe"))
                  {
                      // Skip all .exe files 
                      e.Skip = true;  
                  }
                  else if (e.SourcePath.StartsWith(@"C:\MyFolder"))
                  {
                      // Change the source file path if it starts with "C:\MyFolder" 
                      e.SourcePath = e.SourcePath.Replace(@"C:\MyFolder", @"C:\MySecondFolder");
                  }
                  break;
          }
      }
      
      void client_TransferConfirm(object sender, ComponentPro.IO.TransferConfirmEventArgs e)
      {
          if (e.Exception != null)
              Console.WriteLine("Error: " + e.Exception.Message);
      
          if (e.ConfirmReason == TransferConfirmReason.FileAlreadyExists)
          {
              // Skip the existing file. 
              e.NextAction = TransferConfirmNextActions.Skip;
          }
      
          Console.Write("Do you want to (r)etry or (s)kip?");
          string key = Console.ReadLine();
          if (key == "r")
              e.NextAction = TransferConfirmNextActions.Retry;
          else if (key == "s")
              e.NextAction = TransferConfirmNextActions.Skip;
          else 
              // Cancel the operation. 
              e.NextAction = TransferConfirmNextActions.Cancel;
      }

      ZIP Examples

      Shows how to use AddFiles methods to upload files. The system will skip existing files on the server.

      using System;
      using ComponentPro.IO;
      using ComponentPro.Compression;
      
      ...
      
      private Zip _zip;
      public void DoUpload()
      {
          // Create a new instance. 
          Zip zip = new Zip();
          _zip = zip;
      
          // Create a new archive. 
          zip.Create("test.zip");
      
          // ... 
       
          zip.TransferConfirm += zip_TransferConfirm;
          zip.Progress += zip_Progress;
      
          try 
          {
              TransferOptions opt = new TransferOptions("*.*", FileOverwriteMode.Confirm);
      
              // Add all directories, subdirectories, and files in local folder 'c:\myfolder' to remote folder '/myfolder'. 
              zip.AddFiles("c:\\myfolder", "/myfolder", opt);
          }
          catch (Exception exc)
          {
              Console.WriteLine("Error: " + exc.Message);
          }
      
          // ... 
       
          // Close. 
          zip.Close();
      }
      
      /// <summary> 
      /// This method is raised when user clicks on 'Cancel' button on the form. 
      /// </summary> 
      protected void btnCancel_Click(object sender, EventArgs e)
      {
          // Cancel the upload operation when user clicks on the button. 
          _zip.Cancel();
      }
      
      void zip_Progress(object sender, ComponentPro.IO.FileSystemProgressEventArgs e)
      {
          // Show progress info. 
          Console.WriteLine("Current File: %{0} completed", e.Percentage);
          Console.WriteLine("Total: %{0} completed", e.TotalPercentage);
      
          switch (e.State)
          {
              case TransferState.StartStoringFile:
                  if (e.SourcePath.EndsWith(".exe"))
                  {
                      // Skip all .exe files 
                      e.Skip = true;
                  }
                  else if (e.SourcePath.StartsWith(@"C:\MyFolder"))
                  {
                      // Change the source file path if it starts with "C:\MyFolder" 
                      e.SourcePath = e.SourcePath.Replace(@"C:\MyFolder", @"C:\MySecondFolder");
                  }
                  break;
          }
      }
      
      void zip_TransferConfirm(object sender, ComponentPro.IO.TransferConfirmEventArgs e)
      {
          if (e.Exception != null)
              Console.WriteLine("Error: " + e.Exception.Message);
      
          if (e.ConfirmReason == TransferConfirmReason.FileAlreadyExists)
          {
              // Skip the existing file. 
              e.NextAction = TransferConfirmNextActions.Skip;
          }
      
          Console.Write("Do you want to (r)etry or (s)kip?");
          string key = Console.ReadLine();
          if (key == "r")
              e.NextAction = TransferConfirmNextActions.Retry;
          else if (key == "s")
              e.NextAction = TransferConfirmNextActions.Skip;
          else 
              // Cancel the operation. 
              e.NextAction = TransferConfirmNextActions.Cancel;
      }

      Inheritance Hierarchy

            ComponentPro.IO.ComponentPro.IO.TransferOptions

      Framework

      .NET Compact Framework.NET Compact Framework

      Supported version: 2.0, 3.5, and 3.9
      Assembly: ComponentPro.FileSystem.CF (in ComponentPro.FileSystem.CF.dll)

      .NET Framework.NET Framework

      Supported version: 2.0, 3.0, 3.5, 4.0, 4.5.x, 4.6.x and later
      Assembly: ComponentPro.FileSystem (in ComponentPro.FileSystem.dll)

      Xamarin AndroidXamarin Android

      Supported version: 2.3 and later
      Assembly: ComponentPro.FileSystem.Android (in ComponentPro.FileSystem.Android.dll)

      Xamarin iOSXamarin iOS

      Supported version: 5.1.x and later
      Assembly: ComponentPro.FileSystem.iOS (in ComponentPro.FileSystem.iOS.dll)

      See Also