【发布时间】:2013-04-03 11:52:52
【问题描述】:
我有一个超过 3000 行的文本文件。我正在使用
查找行数string[] lines = File.ReadAllLines(myPath);
var lineCount = lines.Length;
然后我生成一个随机数
Random rand = new Random();
var lineToRead = rand.Next(1, lineCount);
现在我需要读取由随机数生成的特定行。我可以使用
string requiredLine = lines[lineToRead];
因为我的文件很大,所以我认为创建这么大的数组效率不高。有没有更有效或更简单的方法来做到这一点?
【问题讨论】:
-
这是速度和内存使用之间的常见问题。您的方式是内存使用问题,逐行读取将是速度问题。当然,现在我更喜欢在内存中读取 3000 行
-
您至少应该扫描您的文件以查找结束行字符。因此,您可以使用 ReadLine 进行 rand 计数,但不能一次获得正确的行。
-
@Steve:File.ReadAllLines() 的实现只是使用了对 StreamReader.ReadLine() 的重复调用,所以它不会比自己显式执行更快。
-
我不明白为什么删除了两个答案。他们似乎在工作,但我再也看不到这些答案了。
-
@MatthewWatson 你是对的。我应该知道的更好。因此,在这种情况下,最好逐行查找所需的行。当然,如果 OP 使用不同的索引重复操作,则情况并非如此
标签: c#