Differences
This shows you the differences between the selected revisions of the page.
2021-03-25 | 2021-03-25 | ||
reducing nesting (martin) | modernizing c# download code (martin) | ||
Line 21: | Line 21: | ||
{ | { | ||
// Setup session options | // Setup session options | ||
- | SessionOptions sessionOptions = new SessionOptions | + | var sessionOptions = new SessionOptions |
{ | { | ||
Protocol = Protocol.Sftp, | Protocol = Protocol.Sftp, | ||
Line 34: | Line 34: | ||
const int batches = 3; | const int batches = 3; | ||
- | DateTime started = DateTime.Now; | + | var started = DateTime.Now; |
int count = 0; | int count = 0; | ||
- | Int64 bytes = 0; | + | long bytes = 0; |
- | using (Session session = new Session()) | + | using (var session = new Session()) |
{ | { | ||
Console.WriteLine("Connecting..."); | Console.WriteLine("Connecting..."); | ||
Line 44: | Line 44: | ||
Console.WriteLine("Starting files enumeration..."); | Console.WriteLine("Starting files enumeration..."); | ||
+ | var opts = WinSCP.EnumerationOptions.AllDirectories; | ||
IEnumerable<RemoteFileInfo> files = | IEnumerable<RemoteFileInfo> files = | ||
- | session.EnumerateRemoteFiles( | + | session.EnumerateRemoteFiles(remotePath, null, opts); |
- | ························remotePath, null, EnumerationOptions.AllDirectories); | + | |
IEnumerator<RemoteFileInfo> filesEnumerator = files.GetEnumerator(); | IEnumerator<RemoteFileInfo> filesEnumerator = files.GetEnumerator(); | ||
- | List<Task> tasks = new List<Task>(); | + | var tasks = new List<Task>(); |
for (int i = 1; i <= batches; i++) | for (int i = 1; i <= batches; i++) | ||
Line 55: | Line 55: | ||
int no = i; | int no = i; | ||
- | Task task = new Task(() => | + | var task = new Task(() => |
{ | { | ||
- | using (Session downloadSession = new Session()) | + | using (var downloadSession = new Session()) |
{ | { | ||
- | Console.WriteLine("Starting download {0}...", no); | + | Console.WriteLine($"Starting download {no}..."); |
downloadSession.Open(sessionOptions); | downloadSession.Open(sessionOptions); | ||
Line 82: | Line 82: | ||
remoteFilePath, remotePath, localPath); | remoteFilePath, remotePath, localPath); | ||
Console.WriteLine( | Console.WriteLine( | ||
- | "Downloading {0} to {1} in {2}...", | + | $"Downloading {remoteFilePath} to {localFilePath} in {no}..."); |
- | remoteFilePath, localFilePath, no); | + | string localFileDir = Path.GetDirectoryName(localFilePath); |
- | Directory.CreateDirectory( | + | Directory.CreateDirectory(localFileDir); |
- | ···································Path.GetDirectoryName(localFilePath)); | + | ·······························downloadSession.GetFileToDirectory(remoteFilePath, localFileDir); |
- | downloadSession.GetFiles( | + | |
- | ···································RemotePath.EscapeFileMask(remoteFilePath), | + | |
- | localFilePath).Check(); | + | |
} | } | ||
- | Console.WriteLine("Download {0} done", no); | + | Console.WriteLine($"Download {no} done"); |
} | } | ||
- | |||
}); | }); | ||
Line 106: | Line 102: | ||
Console.WriteLine("Done"); | Console.WriteLine("Done"); | ||
- | DateTime ended = DateTime.Now; | + | var ended = DateTime.Now; |
- | Console.WriteLine("Took {0}", (ended - started)); | + | Console.WriteLine($"Took {ended - started}"); |
- | Console.WriteLine("Downloaded {0} files, totaling {1:N0} bytes", count, bytes); | + | Console.WriteLine($"Downloaded {count} files, totaling {bytes:N0} bytes"); |
return 0; | return 0; | ||
Line 114: | Line 110: | ||
catch (Exception e) | catch (Exception e) | ||
{ | { | ||
- | Console.WriteLine("Error: {0}", e); | + | Console.WriteLine($"Error: {e}"); |
return 1; | return 1; | ||
} | } |