Java - Случайное чтение строки - PullRequest
8 голосов
/ 24 января 2011

Я программирую приложение для Android и хочу, чтобы моя программа считывала произвольную строку файла.Как бы я поступил так?

Ответы [ 4 ]

8 голосов
/ 24 января 2011

То, что вы хотите, это LineNumberReader.

Вы можете использовать метод setLineNumber() для перемещения в произвольную позицию в файле.

LineNumberReader rdr;
int numLines;
Random r = new Random();
rdr.setLineNumber(r.nextInt(numLines));
String theLine = rdr.readLine();
4 голосов
/ 24 января 2011

Для этого вам понадобятся либо строки фиксированной длины (подробности реализации должны быть очевидны в этом случае), либо информация о том, сколько существует строк и (необязательно, для лучшей производительности) с какими смещениями внутри файла они начинаются (индекс сортов).

Для небольших файлов вы можете создать такой индекс по требованию, когда вам нужна случайная строка.Чтобы сделать это эффективно для больших файлов, вам нужно постоянно сохранять индекс, возможно, в отдельном файле.

Если строки имеют примерно одинаковую длину и вам не нужна идеальная «случайность», вытакже может выбрать случайное смещение байта внутри файла и отсканировать ближайший разрыв строки.

2 голосов
/ 24 января 2011

Старомодный ответ: Если вы вернули ноль, просто вспомните метод

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 голос
/ 24 января 2011

для получения случайного числа вы можете использовать класс java Random из пакета util.

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

см. http://developer.android.com/reference/java/util/Random.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...