【发布时间】:2011-04-27 05:02:36
【问题描述】:
谁能告诉我如何从 txt 文件中读取随机行?我想从 txt 文件中读取随机行并在 textBox 中仅显示该行。 代码示例会很棒! 感谢转发
【问题讨论】:
-
stackoverflow.com/questions/3745934/… 可以处理任何大小的文件,并且不需要您将整个文件读入内存。
标签: c# random line text-files
谁能告诉我如何从 txt 文件中读取随机行?我想从 txt 文件中读取随机行并在 textBox 中仅显示该行。 代码示例会很棒! 感谢转发
【问题讨论】:
标签: c# random line text-files
var lines = File.ReadAllLines(path);
var r = new Random();
var randomLineNumber = r.Next(0, lines.Length - 1);
var line = lines[randomLineNumber];
【讨论】:
new Random(),如果调用发生的时间太近,结果将不是随机的。应改为使用线程静态Random。见Random number generator only generating one random number。
最简单的解决方案是将所有行读入内存并随机选择一个。假设所有行都可以放入内存。
string[] allLines = File.ReadAllLines(path);
Random rnd1 = new Random();
Console.WriteLine(allLines[rnd1.Next(allLines.Length)]);
【讨论】:
这是一个代码示例:
int lineCount = File.ReadAllLines(@"C:\file.txt").Length;
Random rnd = new Random();
int randomLineNum = rnd.Next(lineCount);
int indicator = 0;
using (var reader = File.OpenText(@"C:\file.txt"))
{
while (reader.ReadLine() != null)
{
if(indicator==randomLineNum)
{
//do your stuff here
break;
}
indicator++;
}
}
【讨论】:
ReadAllLines 然后从数组中选择。