【发布时间】:2011-12-20 01:13:15
【问题描述】:
我有一个读取大文本文件的功能,分割一部分(从给定的开始和结束),并将分割后的数据保存到另一个文本文件中。由于文件太大,我需要添加一个进度条在将拆分后的文本写入另一个文件时读取流和另一个流。Ps.start 和 end 给出日期时间!!
using (StreamReader sr = new StreamReader(file,System.Text.Encoding.ASCII))
{
while (sr.EndOfStream == false)
{
line = sr.ReadLine();
if (line.IndexOf(start) != -1)
{
using (StreamWriter sw = new StreamWriter(DateTime.Now.ToString().Replace("/", "-").Replace(":", "-") + "cut"))
{
sw.WriteLine(line);
while (sr.EndOfStream == false && line.IndexOf(end) == -1)
{
line = sr.ReadLine();
sw.WriteLine(line);
}
}
richTextBox1.Text += "done ..." + "\n";
break;
}
}
}
【问题讨论】:
-
请展开。你在谈论silverlight,winforms,WPF吗?等
-
您需要考虑的另一件事是您是否希望进度条从 0 开始到 100,而不是一个反复循环的进度条。如果是这样,那么您需要有一种方法来计算文件有多少行,以便您可以准确地报告进度。
-
为了阅读它可以循环显示搜索正在进行中..当 (line.IndexOf(start) != -1) 为真时,进度条应该精确到直到它写完了。
-
我无法真正预测 start 和 end 之间有多少行,因为它是一种搜索行直到出现请求的结尾。或者你怎么想?
-
也许我在下面的建议会使这变得不必要,而不是行数,文件中的字节数。
标签: c# winforms progress-bar