大虾们帮帮忙
if ( openFileDialog1.ShowDialog ( ) == DialogResult.OK )
{
FileStream fs = new FileStream ( openFileDialog1.FileName , FileMode.Open , FileAccess.Read ) ;
StreamReader m_streamReader = new StreamReader (fs,System.Text.Encoding.Default);
//使用StreamReader类来读取文件
m_streamReader.BaseStream.Seek ( 0 , SeekOrigin.Begin) ;
// 从数据流中读取每一行,直到文件的最后一行,并在richTextBox1中显示出内容
this.richTextBox1.Text = "*********************************交换机工作信息*********************************\n" ;
string strLine = m_streamReader.ReadLine ( ) ; //this.richTextBox1.Text=m_streamReader.ReadToEnd();
int rowNum=0;
DateTime dtstart=DateTime.Now;
while ( strLine != null )
{
rowNum++;
//if (rowNum<1000)
//{
//对输入的文本内容进行处理,注意此处使用的处理方法不一定对,需检验
//将一行数据读取到数组中
string[] sArray=Regex.Split(strLine," ",RegexOptions.IgnoreCase);
//对数组中的数据进行处理
this.richTextBox1.Text+="*********************************第"+rowNum.ToString()+"条记录*********************************\n";
this.richTextBox1.Text+="日期:"+sArray[0].ToString()+" "+sArray[1].ToString()+"\n";
this.richTextBox1.Text+="时间:"+sArray[2].ToString()+"\n";
this.richTextBox1.Text+="交换机地址:"+sArray[3].ToString()+"\n";
this.richTextBox1.Text+="交换机时间:"+sArray[4].ToString()+" "+sArray[5].ToString()+"\n";
this.richTextBox1.Text+="交换机名及端口号:"+sArray[6].ToString()+"\n";
this.richTextBox1.Text+="交换机信息:";
for (int i=7;i<sArray.Length;i++)//剩余的所有信息内容
this.richTextBox1.Text+=sArray[i].ToString()+" ";
this.richTextBox1.Text+="\n";
this.richTextBox1.Text+="******************************************************************************\n\n";
//}
strLine = m_streamReader.ReadLine ( ) ; }
DateTime dtend=DateTime.Now;
//this.richTextBox1.Text+=rowNum.ToString();
MessageBox.Show("处理了"+rowNum.ToString()+"条记录,耗时"+(dtend-dtstart).ToString()); //关闭此StreamReader对象
m_streamReader.Close ( ) ;
} 进行文本处理时,超过100行记录时,处理的速度就会非常慢,还会出现未响应现象
(但最终可以得到处理结果,我用800多行测试过,需要40多分钟,晕死,文本文件才100K左右)
大虾们帮看看代码怎么优化好!!
if ( openFileDialog1.ShowDialog ( ) == DialogResult.OK )
{
FileStream fs = new FileStream ( openFileDialog1.FileName , FileMode.Open , FileAccess.Read ) ;
StreamReader m_streamReader = new StreamReader (fs,System.Text.Encoding.Default);
//使用StreamReader类来读取文件
m_streamReader.BaseStream.Seek ( 0 , SeekOrigin.Begin) ;
// 从数据流中读取每一行,直到文件的最后一行,并在richTextBox1中显示出内容
this.richTextBox1.Text = "*********************************交换机工作信息*********************************\n" ;
string strLine = m_streamReader.ReadLine ( ) ; //this.richTextBox1.Text=m_streamReader.ReadToEnd();
int rowNum=0;
DateTime dtstart=DateTime.Now;
while ( strLine != null )
{
rowNum++;
//if (rowNum<1000)
//{
//对输入的文本内容进行处理,注意此处使用的处理方法不一定对,需检验
//将一行数据读取到数组中
string[] sArray=Regex.Split(strLine," ",RegexOptions.IgnoreCase);
//对数组中的数据进行处理
this.richTextBox1.Text+="*********************************第"+rowNum.ToString()+"条记录*********************************\n";
this.richTextBox1.Text+="日期:"+sArray[0].ToString()+" "+sArray[1].ToString()+"\n";
this.richTextBox1.Text+="时间:"+sArray[2].ToString()+"\n";
this.richTextBox1.Text+="交换机地址:"+sArray[3].ToString()+"\n";
this.richTextBox1.Text+="交换机时间:"+sArray[4].ToString()+" "+sArray[5].ToString()+"\n";
this.richTextBox1.Text+="交换机名及端口号:"+sArray[6].ToString()+"\n";
this.richTextBox1.Text+="交换机信息:";
for (int i=7;i<sArray.Length;i++)//剩余的所有信息内容
this.richTextBox1.Text+=sArray[i].ToString()+" ";
this.richTextBox1.Text+="\n";
this.richTextBox1.Text+="******************************************************************************\n\n";
//}
strLine = m_streamReader.ReadLine ( ) ; }
DateTime dtend=DateTime.Now;
//this.richTextBox1.Text+=rowNum.ToString();
MessageBox.Show("处理了"+rowNum.ToString()+"条记录,耗时"+(dtend-dtstart).ToString()); //关闭此StreamReader对象
m_streamReader.Close ( ) ;
} 进行文本处理时,超过100行记录时,处理的速度就会非常慢,还会出现未响应现象
(但最终可以得到处理结果,我用800多行测试过,需要40多分钟,晕死,文本文件才100K左右)
大虾们帮看看代码怎么优化好!!
解决方案 »
- 如何获取msi安装文件所在的路径
- Ibtails 运行报错
- 向richtextbox插图
- 求dataGridView中查找指定值的方法
- UrlEncode的问题,请大家看看
- 关于 PostMessage 函数的问题
- 请教高手一个关于打印的问题
- ....向7天长假坚持在线的同行致敬了!!!同时在线高分求教内网访问远程REMOTING如何设置代理及验证?
- C#操作word,如何直接在word文档中生成柱状图?
- 有没有微软专家在线 ??此问题超难别人恐怕回答不了?在c#中如何得到com组件传回的variant(VT_ARRAY 里面包裹了一个自定义结构的数组)
- 动态控件的事件的问题:如何对sender进行类型转换?
- 怎么得到中文Ascii码对应的字符
不要用字符串+操作!效率太低!用StringBuilder存储文本内容,然后toString()赋值给richTextBox1