Java - 随机读取行

Wal*_*ter 8 java file-io android

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

jjn*_*guy 8

你想要的是一个LineNumberReader.

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

LineNumberReader rdr;
int numLines;
Random r = new Random();
rdr.setLineNumber(r.nextInt(numLines));
String theLine = rdr.readLine();
Run Code Online (Sandbox Code Playgroud)


Mic*_*rdt 4

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

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

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