我有一项任务是从文件中删除一些行。在做了一些研究后,我找到了这个解决方案:
using (StreamReader reader = new StreamReader (path)
{
using (StreamWriter writer = new StreamWriter(path2))
{
LineIndex=0;
while ((line = reader.ReadLine()) != null)
{
LineIndex++;
if (LineIndex > 6)
break;
}
while ((line = reader.ReadLine()) != null)
{
writer.WriteLine(line);
}
reader.Close();
writer.Close();
if (File.Exists(path2))
{
File.Delete(path);
File.Move(path2, path);
}
}
}
此代码应该读取路径文件,写入除path2文件中的前6行之外的所有行,然后通过覆盖其先前的内容将path2文件的内容移动到路径文件。但我得到的是路径文件从其以前的所有数据中删除,因此它变为空。有什么解决方案吗?
答案 0 :(得分:5)
采取更多,更简单的方法:
File.WriteAllLines(path2, File.ReadAllLines(path).Skip(6).ToArray())
这可以使用Linq的Skip
,它返回除前6个之外的所有行的数组。另请注意,这适用于较小的文件,因为您将整个文件加载到内存中。