我正在編寫一個Android應用程序,並希望我的程序讀取文件的隨機行。我會怎麼做呢?Java - 隨機行讀取
8
A
回答
4
要做到這一點,你需要是固定長度的線(實現的細節應該是在這種情況下明顯)或信息有多少行有,在裏面有什麼偏移(可選,獲得更好的性能)他們開始的文件(各種索引)。
對於小文件,只要需要隨機行,就可以根據需要創建這樣的索引。爲了有效地處理大文件,你需要持續保持索引,也許在一個單獨的文件中。
如果行長度大致相同,並且不需要完美的「隨機性」,那麼也可以在文件中選擇一個隨機字節偏移並掃描最近的換行符。
8
你想要的是一個LineNumberReader
。
您可以使用方法setLineNumber()
移動到文件中的隨機位置。
LineNumberReader rdr;
int numLines;
Random r = new Random();
rdr.setLineNumber(r.nextInt(numLines));
String theLine = rdr.readLine();
1
要獲得一個隨機數,你可以使用Java的Random
類從util包。
Random rnd = new Random();
int nextRandomLineNumber = rnd.nextInt();
看到http://developer.android.com/reference/java/util/Random.html
2
一個老式的答案: 如果你獲得了一個空,回想起剛纔的方法
BufferedReader br = new BufferedReader(file);
Random rng = new Random (8732467834324L);
String s = br.readLine();
for (; s != null ; s = br.readLine())
if (rng.nextDouble() < 0.2)
break;
br.close();
return s;
相關問題
- 1. Android/Java - 隨機讀取行不變
- 2. 從Vector中讀取隨機對象java
- 3. 針對隨機讀取進行優化
- 4. 如何從java中的文件中讀取隨機行
- 5. 用緩衝讀取器讀取隨機訪問文件
- 6. Java執行隨機停止
- 7. 以隨機的方式讀取行,然後以隨機順序打印數字
- 8. Cassandra/Pycassa:獲取隨機行
- 9. PHP:讀取所有文件,但隨機?
- 10. 讀取文件後打印隨機數
- 11. 內存不被「讀取」。 - 隨機崩潰
- 12. 從/ dev/random讀取隨機數(c)
- 13. 從文本文件中隨機讀取
- 14. 讀取多隨機值某一領域
- 15. c#從txt文件中讀取「n」個隨機行數
- 16. Clojure懶洋洋地從文件中讀取隨機行
- 17. 從txt文件中讀取隨機行的C#(sharp)
- 18. 如何從LSL中的記事卡讀取隨機行?
- 19. 從Python中的文件中讀取許多隨機行
- 20. 如何從python中的一個文件中讀取隨機行?
- 21. 如何從文本文件中讀取隨機行?
- 22. 從文本文件中隨機讀取一行的函數
- 23. C++只讀取文件中的隨機行
- 24. Java隨機數不是隨機的嗎?
- 25. Java Applet隨機存取存儲器
- 26. 使用隨機索引和RAND提取隨機行()
- 27. Java:從文本文件中讀取尾隨的新行
- 28. Java隨機數組
- 29. Java隨機種子
- 30. Java隨機集合
+1。這比我準備提供的答案要好得多。我不知道這個班是否存在。 – McStretch 2011-01-24 18:33:02
@McStretch,謝謝。該類對這種操作非常有用。 (但通常有更好的類使用) – jjnguy 2011-01-24 18:34:17
這絕對有效,但你必須記住,每行讀取意味着讀取文件開頭和該行之間的所有行。 – 2011-01-24 18:35:11