2011-04-26 77 views
2

誰能告訴我如何從txt文件中讀取隨機行?我想從txt文件中讀取隨機行,並僅在textBox中顯示該行。代碼示例會很棒! 感謝名單中FOWARD從txt文件中讀取隨機行的C#(sharp)

+0

http://stackoverflow.com/questions/3745934/read-random-line-from-a-file-c/3745973#3745973將工作與任何大小的文件,並不需要你讀取整個文件到內存中。 – 2011-04-26 22:00:16

回答

7
var lines = File.ReadAllLines(path); 
var r = new Random(); 
var randomLineNumber = r.Next(0, lines.Length - 1); 
var line = lines[randomLineNumber]; 
1

最簡單的解決方案是將讀取所有的行存儲器和選擇一個隨機。假設所有的行都可以放入內存中。

string[] allLines = File.ReadAllLines(path); 
Random rnd1 = new Random(); 
Console.WriteLine(allLines[rnd1.Next(allLines.Length)]); 
+0

陣列沒有計數屬性... – 2011-04-26 20:51:23

+0

感謝馬克。我的壞,糾正它。 – rkg 2011-04-26 20:54:36

+0

這是行不通的......你錯過了你實際從行數組中獲取行的部分。另外,馬克說。 – 2011-04-26 20:55:02

1

下面是一個代碼示例:

 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++; 
      } 
     } 
+3

現在,爲什麼你會爲了獲得計數而將所有行讀入內存,然後重新讀取文件以獲得所需的行?您只需「ReadAllLines」,然後從數組中進行選擇。 – 2011-04-26 22:02:59