文件操作的问题 我有个文本文件,估计比较大,十几二十MB.在.net 下,我如何删除文件中的任意一行.比如,删除最后一行.请问最高效的方法是什么?(我不想把文本所有内容读入内存!)帮帮忙,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果你不怕麻烦,可以开缓冲区,用FileSream二进制方式读写,会稍微快一点但是仍然要全读,查找回车换行的位置,此位置以后的全写 打开两个文件,一个读,一个写假设删除第3行最后把原文件删掉,写的临时文件重命名为原文件using System.IO;//……int line = 0StreamReader sr = new StreamReader(@"C:\1.txt");StreamWriter sw = new StreamWriter(@"C:\1_temp.txt");while (sr.Peek() != -1) { string str = sr.ReadLine(); line++; if(line!=3) { sw.WriteLine(str);//删除第三行,不写 } }sr.Close();sw.Close();File.Delete(@"C:\1.txt");File.Move(@"C:\1_temp.txt", @"C:\1.txt"); 删最后一行的,不用计数了,循环中改为先写后读,则最后一行没写using System.IO;//……StreamReader sr = new StreamReader(@"C:\1.txt");StreamWriter sw = new StreamWriter(@"C:\1_temp.txt");string str = sr.ReadLine();while (sr.Peek() != -1) { sw.WriteLine(str);//删除第三行,不写 str = sr.ReadLine(); }sr.Close();sw.Close();File.Delete(@"C:\1.txt");File.Move(@"C:\1_temp.txt", @"C:\1.txt"); .net如何把邮箱名变成星号? C1TrueDBGrid这个控件 可以用datagridview代替么 真假话题 (附代码求简化) 根据字段 显示文字同时加上样式 如何写? 大家好,我问个垃圾回收的 要显示或隐藏Form因该用什么语句啊。form.hide和form.show不行吗?还是要添加什么引用才能用 datagridview列自动排序的问题(在线等) VS2005 中toolStrip ,MenuStrip 等继承问题 关于在已知道用户所在域,如何产生LDAP连接串的问题! 同样是另存为,为什么对话框样子不一样 找一开源语法高亮显示控件 框架页获参的问题 ??
假设删除第3行
最后把原文件删掉,写的临时文件重命名为原文件using System.IO;//……int line = 0
StreamReader sr = new StreamReader(@"C:\1.txt");
StreamWriter sw = new StreamWriter(@"C:\1_temp.txt");
while (sr.Peek() != -1)
{
string str = sr.ReadLine();
line++;
if(line!=3)
{
sw.WriteLine(str);//删除第三行,不写
}
}
sr.Close();
sw.Close();
File.Delete(@"C:\1.txt");
File.Move(@"C:\1_temp.txt", @"C:\1.txt");
循环中改为先写后读,则最后一行没写using System.IO;//……StreamReader sr = new StreamReader(@"C:\1.txt");
StreamWriter sw = new StreamWriter(@"C:\1_temp.txt");
string str = sr.ReadLine();
while (sr.Peek() != -1)
{
sw.WriteLine(str);//删除第三行,不写
str = sr.ReadLine();
}
sr.Close();
sw.Close();
File.Delete(@"C:\1.txt");
File.Move(@"C:\1_temp.txt", @"C:\1.txt");