Java – 随机读取

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

要做到这一点,你需要固定长度的行(在这种情况下实现细节应该是显而易见的)或者有关有多少行的信息和(可选地,为了更好的性能)在它们开始的文件内部的偏移量(索引)排序)。

对于小文件,只要需要随机行,就可以按需创建这样的索引。 要有效地处理大型文件,您需要持久保留索引,可能在单独的文件中。

如果线条的长度大致相同,并且您不需要完美的“随机性”,您还可以在文件中选择一个随机字节偏移量并扫描最近的换行符。

你想要的是一个LineNumberReader

您可以使用方法setLineNumber()移动到文件中的随机位置。

 LineNumberReader rdr; int numLines; Random r = new Random(); rdr.setLineNumber(r.nextInt(numLines)); String theLine = rdr.readLine(); 

一个老式的答案:如果你找回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; 

要获得随机数,您可以使用util包中的java的Random类。

 Random rnd = new Random(); int nextRandomLineNumber = rnd.nextInt(); 

请参阅http://developer.android.com/reference/java/util/Random.html