Java - 随机读取行

时间:2011-01-24 18:27:19

标签: java android file-io

我正在编写Android应用程序,并希望我的程序读取文件的随机行。我该怎么做呢?

4 个答案:

答案 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