Tôi đang viết một ứng dụng bảng điều khiển c # đơn giản để tải tệp lên máy chủ sftp. Tuy nhiên, số lượng tệp lớn. Tôi muốn hiển thị phần trăm tệp đã tải lên hoặc chỉ số tệp đã tải lên từ tổng số tệp sẽ tải lên.
Đầu tiên, tôi lấy tất cả các tệp và tổng số tệp.
string[] filePath = Directory.GetFiles(path, "*");
totalCount = filePath.Length;
Sau đó, tôi lặp qua tệp và tải lên từng tệp một trong vòng lặp foreach.
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);
}
Trong vòng lặp foreach, tôi có một thanh tiến trình mà tôi gặp sự cố. Nó không hiển thị đúng.
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
}
Đầu ra chỉ là [] 0 trong số 1943
Tôi làm gì sai ở đây?
BIÊN TẬP:
Tôi đang cố hiển thị thanh tiến trình trong khi tải và xuất các tệp XML. Tuy nhiên, nó đi qua một vòng lặp. Sau khi kết thúc vòng đầu tiên, nó chuyển sang vòng thứ hai, v.v.
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++;
}
}
Nó không bao giờ rời khỏi vòng lặp for ... Bất kỳ đề xuất nào?