c#如何停止控制台显示“";而StreamWriter从DataTable复制大量数据

本文关键字:DataTable StreamWriter 复制 数据 控制台 何停止 显示 quot | 更新日期: 2023-09-27 18:20:17

我有一个控制台应用程序,它可以获取数百个小文件,将它们放入一个临时DataTable中,然后将数据复制到一个StreamWriter中。这很好。

但是,控制台输出在StreamWriter复制过程中不断添加"…",这有点烦人。

有没有办法关掉它,或者用其他东西代替它,就像眨眼一样?

以下是正在使用的代码的精简版本:

            Console.WriteLine("Writing to TA_{0}", fileType);
            var streamMaster = new StreamWriter(Settings.WorkingDirectory + "TA_" + fileType, true);
            streamMaster.Flush();
            foreach (var tempFile in filesList)
            {
                var isZipped = tempFile.Contains(".gz");
                var dtTempFile = InternalUtils.GetTable(tempFile, isZipped);
                foreach (DataRow row in dtTempFile.Rows)
                {
                    if(dtTempFile.Rows.IndexOf(row) != 0) streamMaster.WriteLine(String.Join(",", row.ItemArray));
                }
                streamMaster.Write(dtTempFile.Copy());
                dtTempFile.Dispose();
            }
            streamMaster.Close();
            streamMaster.Dispose();
            Console.WriteLine("TA_{0} Complete", fileType);

输出看起来很像这样:

控制台输出

有什么想法吗?

c#如何停止控制台显示“";而StreamWriter从DataTable复制大量数据

对于进度,您可以为此目的显示Console animation。它处理像|/斜线等少数符号。您可以设置光标位置,使其像动画一样旋转。

  Console.WriteLine("Writing to TA_{0}", fileType);
  using(var streamMaster = new StreamWriter(Settings.WorkingDirectory + "TA_" + fileType, true))
   {     
       streamMaster.Flush();
       int counter = 0;
       foreach (var tempFile in filesList)
       {
            ShowAnimation(++counter);
            var isZipped = tempFile.Contains(".gz");
            var dtTempFile = InternalUtils.GetTable(tempFile, isZipped);
            foreach (DataRow row in dtTempFile.Rows)
            {
                if(dtTempFile.Rows.IndexOf(row) != 0) 
                    streamMaster.WriteLine(String.Join(",", row.ItemArray));
            }
            streamMaster.Write(dtTempFile.Copy());
            dtTempFile.Dispose();
        }
    }
    Console.WriteLine("TA_{0} Complete", fileType);

显示动画方法

public void ShowAnimation (int counter)
{              
    switch (counter % 4)
    {
        case 0: Console.Write("/"); break;
        case 1: Console.Write("-"); break;
        case 2: Console.Write("''"); break;
        case 3: Console.Write("|"); break;
    }
    Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop);
}

原来有一个函数在几个层中完成了这项工作。。。

        If m_intRecord Mod 1000 = 0 Then
            Console.Write(".")
        End If

我一定完全忽略了!哇!