ComponentPro UltimateFtp

      Move(IEnumerable, String, TransferOptions, Int32, Boolean) Method

      See AlsoMembers Options: Show AllLanguage Filter: AllSend comments on this topic to ComponentPro
      Moves files on the itemsToMove list that match the search condition specified in the options parameter to the destination directory using multiple threads. 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(
         IEnumerable itemsToMove, 
         string destinationPath, 
         TransferOptions options, 
         int threads, 
         bool waitForThreads
      )

      Parameters

      itemsToMove
      The list of file names or FileInfoBase objects containing information of files to move. (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.
      threads
      The number of threads used for the file transfer.
      waitForThreads
      A boolean value indicating whether to wait for the completion of all threads. If this parameter is true, this method blocks the caller process's execution until all threads have completed; otherwise, this method immediately returns the control to the caller process.

      Return Value

      A FileSystemTransferStatistics object that contains transfer statictics and a list of processed files and directories.

      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