Dosyaları sftp sunucusuna yükleyen basit bir c # konsol uygulaması yazıyorum. Ancak, dosya miktarı büyüktür. Ya yüklenen dosyaların yüzdesini ya da yüklenecek toplam dosya sayısından halihazırda yüklenen dosyaların sayısını görüntülemek istiyorum.
İlk olarak, tüm dosyaları ve toplam dosya sayısını alıyorum.
string[] filePath = Directory.GetFiles(path, "*");
totalCount = filePath.Length;
Sonra dosyada döngü yapıyorum ve bunları foreach döngüsünde birer birer yüklüyorum.
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);
}
Foreach döngüsünde sorunlarım olan bir ilerleme çubuğum var. Düzgün görüntülenmiyor.
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
}
Çıktı 1943'te sadece [] 0
Burada neyi yanlış yapıyorum?
DÜZENLE:
XML dosyalarını yüklerken ve dışa aktarırken ilerleme çubuğunu görüntülemeye çalışıyorum. Ancak, bir döngüden geçiyor. İlk turu bitirdikten sonra ikinci tura geçer ve böyle devam eder.
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++;
}
}
For döngüsünü asla terk etmez ... Herhangi bir öneriniz var mı?