string filename = this.txtbox_filename.Text+@"\"+this.listBox_file.SelectedItem.ToString();
StreamReader myreader = null;
try
{
    myreader = new StreamReader(filename,System.Text.Encoding.Default);
    this.listbox_filehead.Items.Clear();
    for(int i=0;i<=8;i++)
       this.listbox_filehead.Items.Add(myreader.ReadLine());
             string[] mysubstring;
    while (myreader!=null)
{
int n=1;
mysubstring=myreader.ReadLine().Split(',');
                            DataRow dr = mydataset.Tables["mytable"].NewRow();
foreach(string i in mysubstring)
{
     if (n==1) 
dr["depth"]=i.ToString();
     if (n==2) 
dr["az"]=i.ToString();
     if (n==3)
dr["af"]=i.ToString();
     if (n==4) 
dr["bz"]=i.ToString();
     if (n==5)
     {
dr["bf"]=i.ToString();
n=0;
      }
      n++;
}....
我调试的时候发现,文件读完后,就是while(myreader!=null)的时候,并不跳出while,而是继续执行! 
请教各位高手,哪里有误?谢谢!

解决方案 »

  1.   

    while (myreader.Peek() > 0)
      

  2.   

    你不要这么做,参考下面的:
    FileInfo fi = new FileInfo (_filepath);
    FileStream fs;
    //将文件读取到文件流中
    fs = fi.OpenRead ();
    //声明一读取文件流类的实例,用以读取文件流
    StreamReader sr = new StreamReader (fs);
    string myreader = sr.ReadLine() ;//文件数据
    while(myreader != null)
    {
        ...//做处理
    myreader = sr.ReadLine();
    }
      

  3.   

    using (StreamReader sr = new StreamReader(path)) 
                {
                    while (sr.Peek() >= 0) 
                    {
                        Console.Write((char)sr.Read());
                    }
                }也可以判断
    while(myreader.Read() != -1)
    {}