【发布时间】:2010-10-06 15:25:15
【问题描述】:
我需要从文本文件中删除某行。这样做最有效的方法是什么?文件可能很大(超过百万条记录)。
更新: 下面是我目前正在使用的代码,但我不确定它是否好用。
internal void DeleteMarkedEntries() {
string tempPath=Path.GetTempFileName();
using (var reader = new StreamReader(logPath)) {
using (var writer = new StreamWriter(File.OpenWrite(tempPath))) {
int counter = 0;
while (!reader.EndOfStream) {
if (!_deletedLines.Contains(counter)) {
writer.WriteLine(reader.ReadLine());
}
++counter;
}
}
}
if (File.Exists(tempPath)) {
File.Delete(logPath);
File.Move(tempPath, logPath);
}
}
【问题讨论】:
-
如果你有这么大的数据存储,为什么不使用“真正的”数据库?是否对您可用的工具、您当前的技能或项目规范有限制?
-
这是“上面”的要求。使用真正的数据库对我来说会更容易,但不幸的是,我不能使用它。
-
这不好,有一个错误 - 抱歉 :( - 请参阅下面的答案
标签: c# performance file-io