我有一项任务是从文件中删除一些行.经过一些研究后我得出了这个解决方案:
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文件的内容移动到路径文件.但我得到的是路径文件从其以前的所有数据中删除,因此它变为空.有解决方案吗?
更简单,更简单:
File.WriteAllLines(path2, File.ReadAllLines(path).Skip(6).ToArray())
这可以使用Linq Skip
,它返回除前6个之外的所有行的数组.另请注意,这适用于较小的文件,因为您将整个文件加载到内存中.