sftp 서버에 파일을 업로드하는 간단한 C # 콘솔 앱을 작성 중입니다. 그러나 파일의 양이 많습니다. 업로드 할 총 파일 수에서 업로드 된 파일의 비율 또는 이미 업로드 된 파일 수를 표시하고 싶습니다.
먼저 모든 파일과 총 파일 수를 얻습니다.
string[] filePath = Directory.GetFiles(path, "*");
totalCount = filePath.Length;
그런 다음 파일을 반복하고 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);
}
foreach 루프에는 문제가있는 진행률 표시 줄이 있습니다. 제대로 표시되지 않습니다.
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
}
출력은 1943 중 [] 0입니다.
내가 여기서 뭘 잘못하고 있니?
편집하다:
XML 파일을로드하고 내보내는 동안 진행률 표시 줄을 표시하려고합니다. 그러나 그것은 루프를 거치고 있습니다. 첫 번째 라운드가 끝나면 두 번째 라운드로 넘어갑니다.
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 루프를 떠나지 않습니다 ... 제안 사항이 있습니까?