我正在编写Android应用程序,并希望我的程序读取文件的随机行。我该怎么做呢?
答案 0 :(得分:8)
你想要的是LineNumberReader
。
您可以使用方法setLineNumber()
移动到文件中的随机位置。
LineNumberReader rdr;
int numLines;
Random r = new Random();
rdr.setLineNumber(r.nextInt(numLines));
String theLine = rdr.readLine();
答案 1 :(得分:4)
要做到这一点,你需要固定长度的行(在这种情况下实现细节应该是显而易见的)或者有关有多少行的信息和(可选地,为了更好的性能)它们开始的文件内部的偏移量(各种指数)。
对于小文件,只要需要随机行,就可以按需创建这样的索引。为了有效地处理大型文件,您需要持久保留索引,可能在单独的文件中。
如果行的长度大致相同,并且您不需要完美的“随机性”,您还可以在文件中选择一个随机字节偏移量并扫描最近的换行符。
答案 2 :(得分:2)
一个老式的答案: 如果您返回null,只需调用方法
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;
答案 3 :(得分:1)
要获得随机数,您可以使用util包中的java Random
类。
Random rnd = new Random();
int nextRandomLineNumber = rnd.nextInt();
请参阅http://developer.android.com/reference/java/util/Random.html