Ich schreibe eine einfache C # -Konsolen-App, die Dateien auf den SFTP-Server hochlädt. Die Anzahl der Dateien ist jedoch groß. Ich möchte entweder den Prozentsatz der hochgeladenen Dateien oder nur die Anzahl der bereits hochgeladenen Dateien aus der Gesamtzahl der hochzuladenden Dateien anzeigen.
Zuerst bekomme ich alle Dateien und die Gesamtzahl der Dateien.
string[] filePath = Directory.GetFiles(path, "*");
totalCount = filePath.Length;
Dann durchlaufe ich die Datei und lade sie einzeln in jeder Schleife hoch.
foreach(string file in filePath)
{
string FileName = Path.GetFileName(file);
//copy the files
oSftp.Put(LocalDirectory + "/" + FileName, _ftpDirectory + "/" + FileName);
//Console.WriteLine("Uploading file..." + FileName);
drawTextProgressBar(0, totalCount);
}
In der foreach-Schleife habe ich einen Fortschrittsbalken, mit dem ich Probleme habe. Es wird nicht richtig angezeigt.
private static void drawTextProgressBar(int progress, int total)
{
//draw empty progress bar
Console.CursorLeft = 0;
Console.Write("["); //start
Console.CursorLeft = 32;
Console.Write("]"); //end
Console.CursorLeft = 1;
float onechunk = 30.0f / total;
//draw filled part
int position = 1;
for (int i = 0; i < onechunk * progress; i++)
{
Console.BackgroundColor = ConsoleColor.Gray;
Console.CursorLeft = position++;
Console.Write(" ");
}
//draw unfilled part
for (int i = position; i <= 31 ; i++)
{
Console.BackgroundColor = ConsoleColor.Green;
Console.CursorLeft = position++;
Console.Write(" ");
}
//draw totals
Console.CursorLeft = 35;
Console.BackgroundColor = ConsoleColor.Black;
Console.Write(progress.ToString() + " of " + total.ToString() + " "); //blanks at the end remove any excess
}
Die Ausgabe ist nur [] 0 von 1943
Was mache ich hier falsch?
BEARBEITEN:
Ich versuche, den Fortschrittsbalken anzuzeigen, während ich XML-Dateien lade und exportiere. Es geht jedoch durch eine Schleife. Nachdem es die erste Runde beendet hat, geht es zur zweiten und so weiter.
string[] xmlFilePath = Directory.GetFiles(xmlFullpath, "*.xml");
Console.WriteLine("Loading XML files...");
foreach (string file in xmlFilePath)
{
for (int i = 0; i < xmlFilePath.Length; i++)
{
//ExportXml(file, styleSheet);
drawTextProgressBar(i, xmlCount);
count++;
}
}
Es verlässt nie die for-Schleife ... Irgendwelche Vorschläge?