Good day all - I have a C# console application that connects via [login to view URL] to a Unix server and downloads the files from the Unix Server. The issue I face is that when the directory on the Unix Server contains a folder, my code errors out.
What I want...
I need the below code to be updated to download
1) All files in the parent directory (already does this)
2) All folders and sub-folders (including any files) -- I NEED THIS
Below is my current syntax:
private static void DownloadFile(string arc, string username, string password)
{
string fullpath;
string fp;
var options = new ProgressBarOptions
{
ProgressCharacter = '.',
ProgressBarOnBottom = true
};
using (var sftp = new SftpClient(Host, username, password))
{
[login to view URL]();
fp = RemoteDir + "/" + arc;
if ([login to view URL](fp))
fullpath = fp;
else
fullpath = SecondaryRemoteDir + d + "/" + arc;
if ([login to view URL](fullpath))
{
var files = [login to view URL](fullpath);
foreach (var file in files)
{
if ([login to view URL]().Substring(0, 1) != ".")
{
[login to view URL]("Downloading file from the server...");
[login to view URL]();
using (var pbar = new ProgressBar(100, "Downloading " + [login to view URL] + "....", options))
{
SftpFileAttributes att = [login to view URL](fullpath + "/" + [login to view URL]);
var fileSize = [login to view URL];
var ms = new MemoryStream();
IAsyncResult asyncr = [login to view URL](fullpath + "/" + [login to view URL], ms);
SftpDownloadAsyncResult sftpAsyncr = (SftpDownloadAsyncResult)asyncr;
int lastpct = 0;
while (![login to view URL])
{
int pct = (int)((long)[login to view URL] / fileSize) * 100;
if (pct > lastpct)
for (int i = 1; i < pct - lastpct; i++)
[login to view URL]();
}
[login to view URL](asyncr);
[login to view URL]("Writing File to disk...");
[login to view URL]();
string localFilePath = "C:\" + [login to view URL];
var fs = new FileStream(localFilePath, [login to view URL], [login to view URL]);
[login to view URL](fs);
[login to view URL]();
[login to view URL]();
}
}
}
}
else
{
[login to view URL]("The arc " + arc + " with a date of " + d + " does not exist at either location of 1) " + RemoteDir + " or 2) " + SecondaryRemoteDir);
[login to view URL]();
[login to view URL]("Please press any key to close this window");
[login to view URL]();
}
}
}