日期:2014-05-19  浏览次数:20796 次

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

帮帮忙,谢谢!

------解决方案--------------------
不懂 顶!!!
------解决方案--------------------
这个不知道 能行吗?
------解决方案--------------------
upupup
------解决方案--------------------
只想到一行一行的搞。不知道有没有其他的方法
------解决方案--------------------
一行一行的搞,似乎是最经济的办法了
------解决方案--------------------
如果你不怕麻烦,可以开缓冲区,用FileSream二进制方式读写,会稍微快一点

但是仍然要全读,查找回车换行的位置,此位置以后的全写
------解决方案--------------------
文本文件是顺序存储的,不能随机访问,没有删除其中一部分的说法
------解决方案--------------------
建立一个临时文件,500行或更多的读\写\编辑,然后保存到临时文件,完成后删除原文件,临时文件改名
------解决方案--------------------
删最后一行的,不用计数了,
循环中改为先写后读,则最后一行没写

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 ");