Downloads the content of the specified remote file or directory to the destination directory using multiple threads.
public FileSystemTransferStatistics Download(
string remotePath,
bool includeBaseDirectory,
IEnumerable remoteFilesToTransfer,
FileSystem destinationFileSystem,
string destinationDirectoryPath,
TransferOptions options,
int threads,
bool waitForThreads
)
Public Function Download( _
ByVal remotePath As String, _
ByVal includeBaseDirectory As Boolean, _
ByVal remoteFilesToTransfer As IEnumerable, _
ByVal destinationFileSystem As FileSystem, _
ByVal destinationDirectoryPath As String, _
ByVal options As TransferOptions, _
ByVal threads As Integer, _
ByVal waitForThreads As Boolean _
) As FileSystemTransferStatistics
public:
FileSystemTransferStatistics Download(
String^ remotePath,
bool includeBaseDirectory,
IEnumerable^ remoteFilesToTransfer,
FileSystem^ destinationFileSystem,
String^ destinationDirectoryPath,
TransferOptions^ options,
int threads,
bool waitForThreads
);
Parameters
- remotePath
- The path and name of the remote directory where the files will be downloaded to the destination folder.
When the parameter remoteFilesToTransfer is a null reference, this parameter can include filtering masks to limit the files that are downloaded. For example, if ""(empty string) is specified, the entire contents of the current folder will be downloaded.
If "*.txt" is used, all the files in the current folder that have the .TXT extension will be downloaded. If "/mydir/*.dat;*.cs,*.vb" is used (masks are delimited by ',', ';', and '|' characters), files with the DAT, CS, or VB extension in "/mydir" will be downloaded.
If no masks specified, the whole content of the remote directory should be downloaded. The final search condition depends on the SearchCondition and SearchConditionCombinedWithMasksInSourcePath settings of the options parameter.
Attention: some servers may be case-sensitive!
- includeBaseDirectory
- Indicates whether the containing directory should also be created in the destination directory.
For example: Download("/MyDir/*.txt", true, null, zipSystem, "/ZipDir" ...) - if this parameter is
true
,
"MyDir" is created in "ZipDir" and all files and dirs within "MyDir" are copied to "ZipDir/MyDir";
otherwise false
, "MyDir" is not created in "ZipDir", only files and subdirectories within "MyDir" are copied to "ZipDir". - remoteFilesToTransfer
- The list of files and directories to download,
or a null reference to transfer files in the remotePath that match the search condition specified in the options parameter.
This can contain String and FileInfoBase objects. (e.g.
Download("", false, new string[] {"/dir/file1", "file2", "dir1" }...)
or Download("", false, new object[] {"file1", fileInfo1, fileInfo2 }...)
) - destinationFileSystem
- The destination file system that receives the files from the server.
- destinationDirectoryPath
- The path of the destination directory to receive files from the server.
- options
- The transfer options object which provides many settings to control the file transfer process.
- threads
- The number of threads used for the simultaneous 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.
Use 50 threads to download files simultaneously from another FTP server.
using ComponentPro;
using ComponentPro.IO;
using ComponentPro.Net;
...
using (Ftp firstFtp = new Ftp())
{
// Connect to the FTP server.
firstFtp.Connect("localhost");
// Authenticate.
firstFtp.Authenticate("test", "test");
// Create the second Ftp instance.
Ftp ftp2 = new Ftp();
ftp2.Connect("mysecondserver");
// Authenticate.
ftp2.Authenticate("test", "test");
firstFtp.Download(
"/data", // The remote directory on the 1st FTP server.
false, // The base directory is not include - only files and subdirectories in "/data" will be copied.
null,
ftp2, // The second FTP file system
"/dest", // The remote directory on the 2nd FTP server.
new TransferOptions(),
50, // Use 50 threads
true // Wait until all the threads complete.
);
// Download TXT and DAT files only
firstFtp.Download(
"/data/*.txt;*.dat", // The remote directory on the 1st FTP server.
false, // The base directory is not include - only files and subdirectories in "/data" will be copied.
null,
ftp2, // The second FTP file system
"/dest", // The remote directory on the 2nd FTP server.
new TransferOptions(),
50, // Use 50 threads
true // Wait until all the threads complete.
);
ftp2.Disconnect();
}
Imports ComponentPro
Imports ComponentPro.IO
Imports ComponentPro.Net
...
Using firstFtp As New Ftp()
' Connect to the FTP server.
firstFtp.Connect("localhost")
' Authenticate.
firstFtp.Authenticate("test", "test")
' Create the second Ftp instance.
Dim ftp2 As New Ftp()
ftp2.Connect("mysecondserver")
' Authenticate.
ftp2.Authenticate("test", "test")
firstFtp.Download("/data", False, Nothing, ftp2, "/dest", New TransferOptions(), 50, True) ' Wait until all the threads complete. - Use 50 threads - The remote directory on the 2nd FTP server. - The second FTP file system - The base directory is not include - only files and subdirectories in "/data" will be copied. - The remote directory on the 1st FTP server.
' Download TXT and DAT files only
firstFtp.Download("/data/*.txt;*.dat", False, Nothing, ftp2, "/dest", New TransferOptions(), 50, True) ' Wait until all the threads complete. - Use 50 threads - The remote directory on the 2nd FTP server. - The second FTP file system - The base directory is not include - only files and subdirectories in "/data" will be copied. - The remote directory on the 1st FTP server.
ftp2.Disconnect()
End Using