ComponentPro UltimateFtp

      Move(String, IEnumerable, String, TransferOptions) Method

      See AlsoMembers Options: Show AllLanguage Filter: AllSend comments on this topic to ComponentPro
      Moves files from the specified directory that match the search condition specified in the options parameter to the destination directory. This method only moves the items of the specified directory if the sourcePath parameter does not end with a directory separator (e.g. '/' or '\'). To move the whole directory, use the Rename method instead.

      Syntax

      public FileSystemTransferStatistics Move(
         string sourcePath, 
         IEnumerable itemsToMove, 
         string destinationPath, 
         TransferOptions options
      )

      Parameters

      sourcePath
      The path of the directory containing files and subdirectories to move. If it is empty, the current directory path of the file system is used. When the parameter itemsToMove is a null reference, this can contain wildcard masks. For example, "/myremotedir/*.dat;*.cs,*.vb" means all .dat, .cs, and .vb files in '/myremotedir' will be moved, "/myremotedir" means all files in '/myremotedir' will be moved. For more details, see NameSearchCondition and the option SearchConditionCombinedWithMasksInSourcePath.
      itemsToMove
      The list of files and directories to move, or a null reference to transfer files in the sourcePath that match the search condition specified in the options parameter. This list must comprise file paths in String and/or FileInfoBase instances. (e.g. string[] files = new string[] {"file1", "file2", "dir1" } or object[] files = new string[] {"file1", fileInfo1, fileInfo2 })
      destinationPath
      The path of the destination directory.
      options
      The transfer options object which provides many settings to control the file transfer process.

      Examples

      FTP Examples

      Shows how to use Rename and Move method to move single or multiple files.

      using System;
      using ComponentPro;
      using ComponentPro.Net;
      using ComponentPro.IO;
      
      ...
      
      static void Main()
      {
          // Create a new class instance. 
          Ftp client = new Ftp();
      
          // Connect to the SFTP server. 
          client.Connect("myserver");
      
          // Authenticate. 
          client.Authenticate("userName", "password");
      
          // ... 
       
          // Move an entire directory with the standard rename command. 
          client.Rename("/my old folder", "/my new folder/new one");
          
          TransferOptions opt = new TransferOptions(
              true, // Build directory structure. 
              true, // Recursive. 
              OptionValue.Yes, // Create empty directories.   
              (SearchCondition)null, //  
              FileOverwriteMode.Overwrite,
              SymlinksResolveAction.Skip);
          opt.DeleteEmptyDirectories = true; // Remove empty directories.             
          // Move all .cs and .vb files to a new folder. 
          client.Move("/myfolder2/*.cs,*.vb", "/my new folder", opt);
      
          // Move the selected files in '/my folder' to 'my new folder'. 
          string[] files = { "my file1.dat", "file2.txt", "my dir" };
          client.Move("/my folder", files, "my new folder", opt);
      
          // Handle file existence event 
          client.TransferConfirm += client_TransferConfirm;
          opt.FileOverwriteMode = FileOverwriteMode.Confirm;
      
          // Move all *.dat and *.txt files to 'my dest' folder. 
          // If a .txt file already exists, skip it; otherwise overwrite. See the event handler client_TransferConfirm. 
          client.Move("my source/*.dat,*.txt", "my dest", opt);
      
          // With advanced search conditions. 
          opt.SearchCondition =
              SearchCondition.SizeInRange(10, 10240) +        // Search for files with size from 10 -> 10240 bytes 
              SearchCondition.ModifiedAfter(new DateTime(2010, 05, 01)); // and modifed after 2010/05/01. 
          // Move XLS files. 
          client.Move("my data/*.xls", "my dest", opt);
      
          // Move files simultaneously using 3 threads. 
          client.Move("/my root/*.txt", "/new folder", 3, true);
      
          // ... 
       
          // Disconnect. 
          client.Disconnect();
      }
      
      static void client_TransferConfirm(object sender, TransferConfirmEventArgs e)
      {
          if (e.ConfirmReason == TransferConfirmReason.FileAlreadyExists)
          {
              if (e.SourceFileInfo.Name.EndsWith(".txt"))
                  e.NextAction = TransferConfirmNextActions.Skip; // Skip 'txt' file if it already exists. 
              else 
                  e.NextAction = TransferConfirmNextActions.Overwrite; // otherwise overwrite it. 
          }
      }

      SFTP Examples

      Shows how to use Rename and Move method to move single or multiple files.

      using System;
      using ComponentPro;
      using ComponentPro.Net;
      using ComponentPro.IO;
      
      ...
      
      static void Main()
      {
          // Create a new class instance. 
          Sftp client = new Sftp();
      
          // Connect to the SSFTP server. 
          client.Connect("myserver");
      
          // Authenticate. 
          client.Authenticate("userName", "password");
      
          // ... 
       
          // Move an entire directory with the standard rename command. 
          client.Rename("/my old folder", "/my new folder/new one");
          
          TransferOptions opt = new TransferOptions(
              true, // Build directory structure. 
              true, // Recursive. 
              OptionValue.Yes, // Create empty directories.   
              (SearchCondition)null, //  
              FileOverwriteMode.Overwrite,
              SymlinksResolveAction.Skip);
          opt.DeleteEmptyDirectories = true; // Remove empty directories.             
          // Move all .cs and .vb files to a new folder. 
          client.Move("/myfolder2/*.cs,*.vb", "/my new folder", opt);
      
          // Move the selected files in '/my folder' to 'my new folder'. 
          string[] files = { "my file1.dat", "file2.txt", "my dir" };
          client.Move("/my folder", files, "my new folder", opt);
      
          // Handle file existence event 
          client.TransferConfirm += client_TransferConfirm;
          opt.FileOverwriteMode = FileOverwriteMode.Confirm;
      
          // Move all *.dat and *.txt files to 'my dest' folder. 
          // If a .txt file already exists, skip it; otherwise overwrite. See the event handler client_TransferConfirm. 
          client.Move("my source/*.dat,*.txt", "my dest", opt);
      
          // With advanced search conditions. 
          opt.SearchCondition =
              SearchCondition.SizeInRange(10, 10240) +        // Search for files with size from 10 -> 10240 bytes 
              SearchCondition.ModifiedAfter(new DateTime(2010, 05, 01)); // and modifed after 2010/05/01. 
          // Move XLS files. 
          client.Move("my data/*.xls", "my dest", opt);
      
          // Move files simultaneously using 3 threads. 
          client.Move("/my root/*.txt", "/new folder", 3, true);
      
          // ... 
       
          // Disconnect. 
          client.Disconnect();
      }
      
      static void client_TransferConfirm(object sender, TransferConfirmEventArgs e)
      {
          if (e.ConfirmReason == TransferConfirmReason.FileAlreadyExists)
          {
              if (e.SourceFileInfo.Name.EndsWith(".txt"))
                  e.NextAction = TransferConfirmNextActions.Skip; // Skip 'txt' file if it already exists. 
              else 
                  e.NextAction = TransferConfirmNextActions.Overwrite; // otherwise overwrite it. 
          }
      }

      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)

      Portable Class Library for Windows Phone 8.1 and Windows 8.1 Store AppsPortable Class Library for Windows Phone 8.1 and Windows 8.1 Store Apps

      Supported version: 4.6.x and later
      Assembly: ComponentPro.FileSystem.WinPcl (in ComponentPro.FileSystem.WinPcl.dll)

      Universal Windows Platform (includes Windows 10 Mobile, Windows 10 Store Apps and Windows 10 IoT)Universal Windows Platform (includes Windows 10 Mobile, Windows 10 Store Apps and Windows 10 IoT)

      Supported version: 4.6.x and later
      Assembly: ComponentPro.FileSystem.Uwp (in ComponentPro.FileSystem.Uwp.dll)

      Xamarin AndroidXamarin Android

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

      Xamarin MacXamarin Mac

      Supported version: 2.0.x and later
      Assembly: ComponentPro.FileSystem.Mac (in ComponentPro.FileSystem.Mac.dll)

      Xamarin iOSXamarin iOS

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

      See Also