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);
输出看起来很像这样:
控制台输出
有什么想法吗?
对于进度,您可以为此目的显示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
我一定完全忽略了!哇!