我现在只会把文本的内容用StreamReader把他读到某个string[],然后再用StreamWriter写回文本,当然我要删除的那一行就不写回文本我想请问的是,有没有更快更方便的方法,可以删除文本中的某一行呢?
例如有没有像DeleteLine(n)这样子的方法?
我msdn和csdn上找不满意的答案,所以来这请教各位大侠
例如有没有像DeleteLine(n)这样子的方法?
我msdn和csdn上找不满意的答案,所以来这请教各位大侠
{
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),处理完后,你在把这个列表保存到文本文件
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++;
}
//这里执行删除操作
}
}
我学的也不好 这只是个思路
File.WriteAllLines可以将这两个方法封装一下,使用起来很简单
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确实比我之前的方法快一点