栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

确定文本文件中的行数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

确定文本文件中的行数

严重迟来的编辑:如果您使用的是.NET 4.0或更高版本

File
类有一个新的
ReadLines
,其懒惰地列举线而不是贪婪地读取它们全部纳入等的阵列的方法
ReadAllLines
。因此,您现在可以同时拥有效率和简洁性:

var lineCount = File.ReadLines(@"C:file.txt").Count();

原始答案

如果您不太担心效率,可以简单地写:

var lineCount = File.ReadAllLines(@"C:file.txt").Length;

对于更有效的方法,您可以执行以下操作:

var lineCount = 0;using (var reader = File.OpenText(@"C:file.txt")){    while (reader.ReadLine() != null)    {        lineCount++;    }}

编辑:回应有关效率的问题

我说第二个效率更高的原因是关于内存使用情况,不一定是速度。第一个将文件的全部内容加载到一个数组中,这意味着它必须至少分配与文件大小一样多的内存。第二个仅一次循环一行,因此它不必一次分配多于一行的内存。对于小文件来说,这并不是很重要,但是对于大文件来说,这可能是个问题(例如,如果您尝试在32位系统上找到4GB文件中的行数,那么根本不够用)用户模式地址空间来分配这么大的数组)。

就速度而言,我不希望其中有很多。ReadAllLines可能在内部进行了一些优化,但另一方面,它可能不得不分配大量的内存。我猜想对于小文件,ReadAllLines可能会更快,但是对于大文件,ReadAllLines可能会慢得多。尽管唯一的方法是使用秒表或代码分析器对其进行测量。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/465480.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号