我现在只会把文本的内容用StreamReader把他读到某个string[],然后再用StreamWriter写回文本,当然我要删除的那一行就不写回文本我想请问的是,有没有更快更方便的方法,可以删除文本中的某一行呢?
例如有没有像DeleteLine(n)这样子的方法?
我msdn和csdn上找不满意的答案,所以来这请教各位大侠

解决方案 »

  1.   

    你可以把文本读到一个List中,然后操作List,完毕后再保存        private void button3_Click(object sender, EventArgs e)
            {
                List<string> lns = new List<string>();//声明一个泛型
                using (StreamReader str = new StreamReader("c:\\1.txt"))
                {
                    string ln;
                    while ((ln = str.ReadLine()) != null)
                    {
                        lns.Add(ln);//读到List中
                    }
                }
            }
    删除时,可以使用lns.RemoveAt(Index),处理完后,你在把这个列表保存到文本文件
      

  2.   


       private void read(int i) //传进你要删除的行
            {
                 StreamReader str = new StreamReader("c:\\1.txt")
                 int j=0;
                if(i>0)
               { while (j<i)//自动找到你要删除的行
                    {if(str.Read()==换行符)
                         j++;
                  }
                 
                   //这里执行删除操作
               }                   
                    
               
            }
    我学的也不好  这只是个思路
      

  3.   

    File.ReadAllLines
    File.WriteAllLines
    可以将这两个方法封装一下,使用起来很简单
      

  4.   

    按照bdmh大的说法,我摸索出下列code:        
    private void button1_Click(object sender, EventArgs e)
            {
                List<string> lns = new List<string>();//声明一个泛型
                using(StreamReader sr=new StreamReader("e:\\temp\\mytest.txt",Encoding.UTF8))
                {
                    string ln;
                    while ((ln=sr.ReadLine())!=null)
                    {
                        lns.Add(ln);
                    }
                }
                lns.RemoveAt(2);//指定要删除的行
                StreamWriter sw=new StreamWriter("e:\\temp\\mytest.txt",false,Encoding.UTF8);
                foreach (string s in lns)
                    sw.WriteLine(s);
                sw.Close();
            }
    用List来存StreamReader确实比我之前的方法快一点