现在要读入一个有上千万条数据的文本文件,我用
  openFileDialog1.Filter="文本文件(*.txt)|*.txt";            if (openFileDialog1.ShowDialog()== DialogResult.OK)
            {
                StreamReader sreader = new StreamReader(new FileStream(openFileDialog1.FileName, FileMode.Open), System.Text.Encoding.Default);
 //循环读取文本文件中的数据
                while (sreader.Peek()>0)
                {
                    string str = sreader.ReadLine();
                    string[] strInfo = str.Split(new char[] { ' ' });                    string strID = strInfo[0].ToString();
                    string strCode = strInfo[1].ToString();
}
如果是一行一行读是否会影响到读取的效率,怎样提升读取的效率

解决方案 »

  1.   

    StreamReader有个readtoend函数,进来后再操作,可能会快点吧,没试过,你不防测试一下,不过其实读文件是有缓存的,所以不会真的一条一条从硬盘里读,而系统是一次就读一块.
      

  2.   

    StreamReader sreader = new StreamReader(new FileStream(openFileDialog1.FileName, FileMode.Open), System.Text.Encoding.Default); 
    string all=reader.ReadToEnd();
    可以一次全部读取到内存。
      

  3.   

    楼主脑子有毛病?
    StreamReader sreader = new StreamReader(new FileStream(openFileDialog1.FileName, FileMode.Open)。。
    为什么不是
    StreamReader sreader = new StreamReader(openFileDialog1.FileName。。string[] strInfo = str.Split(new char[] { ' ' }); 
    为什么不是:
    string[] strInfo = str.Split(' ' ); //这是一个params
    更简单的是:
    string[] strInfo = str.Split();//默认WhiteSpace既然是格式化的文本,为什么不用TextFieldPaser呢?没事练字玩?