文件操作的问题

yx10 2007-06-06 04:14:16
我有个文本文件,估计比较大,十几二十MB.
在.net 下,我如何删除文件中的任意一行.
比如,删除最后一行.
请问最高效的方法是什么?
(我不想把文本所有内容读入内存!)

帮帮忙,谢谢!
...全文
229 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
viena 2007-06-06
  • 打赏
  • 举报
回复
不好意思,以上的“//删除第三行,不写”这个注释不是这里的注释,是复制上面的忘记删掉了
viena 2007-06-06
  • 打赏
  • 举报
回复
删最后一行的,不用计数了,
循环中改为先写后读,则最后一行没写

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");
viena 2007-06-06
  • 打赏
  • 举报
回复
打开两个文件,一个读,一个写
假设删除第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");
aSalt 2007-06-06
  • 打赏
  • 举报
回复
建立一个临时文件,500行或更多的读\写\编辑,然后保存到临时文件,完成后删除原文件,临时文件改名
yx10 2007-06-06
  • 打赏
  • 举报
回复
那请问,我一行一行读,怎样找到最后一行,然后删除它!
能不能给个示例代码!??
谢谢!
viena 2007-06-06
  • 打赏
  • 举报
回复
文本文件是顺序存储的,不能随机访问,没有删除其中一部分的说法
viena 2007-06-06
  • 打赏
  • 举报
回复
如果你不怕麻烦,可以开缓冲区,用FileSream二进制方式读写,会稍微快一点

但是仍然要全读,查找回车换行的位置,此位置以后的全写
viena 2007-06-06
  • 打赏
  • 举报
回复
一行一行的搞,似乎是最经济的办法了
yx10 2007-06-06
  • 打赏
  • 举报
回复
有谁可以帮帮忙的啊?
yx10 2007-06-06
  • 打赏
  • 举报
回复
有没有搞错!
jinta2001 2007-06-06
  • 打赏
  • 举报
回复
只想到一行一行的搞。不知道有没有其他的方法
fw629 2007-06-06
  • 打赏
  • 举报
回复
upupup
shun1984a 2007-06-06
  • 打赏
  • 举报
回复
这个不知道 能行吗?
xingxing2378 2007-06-06
  • 打赏
  • 举报
回复
不懂 顶!!!

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧