微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

删除C#中的文本文件的第一行

我现在可以使用以下命令删除文本文件的最后一行:

var lines = System.IO.File.ReadAllLines("test.txt"); System.IO.File.WriteallLines("test.txt",lines.Take(lines.Length - 1).ToArray());

尽pipe如何删除文本文件的开头?

你可以用.net创build一个Windows资源pipe理器插件吗?

获取命令行解释器

如何从另一个应用程序的窗口中的控件读取数据?

如何将Windowsauthentication信息存储在数据库

将选定的列表框(绑定)项目保存到c#中的数组

取而代之的是,你可以改为使用lines.Skip如:

var lines = File.ReadAllLines("test.txt"); File.WriteallLines("test.txt",lines.Skip(1).ToArray());

尽管事实上使用的技术(读取所有的文本和写回所有的东西)是非常低效的。

关于高效的方式:低效率来自于将整个文件读入内存的必要性。 反过来,可以很容易地在一个流中查找并将流复制到另一个输出文件删除原来的,并重命名旧的。 那一个会同样快,但消耗更少的内存。

最后截断一个文件要容易得多。 你可以找到trunaction的位置并调用FileStream.SetLength() 。

var lines = System.IO.File.ReadAllLines("test.txt"); System.IO.File.WriteallLines("test.txt",lines.Skip(1).ToArray());

Skip从序列的开头消除了给定数量的元素。 从序列的尾部消除除了给定数量的元素之外的所有元素。

这是一个替代方案:

using (var stream = File.OpenRead("C:\yourfile")) { var items = new LinkedList<string>(); using (var reader = new StreamReader(stream)) { reader.ReadLine(); // skip one line string line; while ((line = reader.ReadLine()) != null) { //it's far better to do the actual processing here items.AddLast(line); } } }

更新

如果你需要IEnumerable<string>而不想浪费内存,你可以这样做:

public static IEnumerable<string> GetFileLines(string filename) { using (var stream = File.OpenRead(filename)) { using (var reader = new StreamReader(stream)) { reader.ReadLine(); // skip one line string line; while ((line = reader.ReadLine()) != null) { yield return line; } } } } static void Main(string[] args) { foreach (var line in GetFileLines("C:\yourfile.txt")) { // do something with the line here. } }

从文本文件删除第一行

System.IO.StreamReader file = new System.IO.StreamReader(filePath); string data = file.ReadToEnd(); file.Close(); data = Regex.Replace(data,"<.*n",""); System.IO.StreamWriter file = new System.IO.StreamWriter(filePath,false); file.Write(data); file.Close();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐