Java – Línea aleatoria leer
Estoy programando una aplicación para Android, y me gustaría que mi programa leyera una línea aleatoria de un archivo. ¿Cómo iba a hacer eso?
- Android OpenCV Buscar contornos
- Keytool genera huella digital SHA1 en lugar de MD5?
- Android - Cómo convertir la cadena en utf-8 en android
- Conexión a un espacio de nombres socket.io mediante la biblioteca socket.io-client.java
- La dependencia de compilación Gradle no se agrega a classpath
- RuntimeException: No se pudo enviar evento @ otto
- Android - java.lang.RuntimeException: Excepción Stub al analizar String en JSONObject
- ¿Es posible en Android registrar algo reproducido por MediaPlayer?
- ¿Por qué se recomienda llamar a MultiDex.install () en attachBaseContext (Context)?
- ¿Cómo implementar un gesto de deslizamiento entre fragmentos?
- Cómo guardar un lienzo en un mapa de bits en Android
- Dropbox SDK para Android: no puede encontrar AndroidAuthSession
- Reconocimiento Óptico de Caracteres Android con OpenCV
Para ello, necesita líneas de longitud fija (los detalles de implementación deben ser obvios en ese caso) o información sobre cuántas líneas hay y (opcionalmente, para un mejor rendimiento) en qué compensaciones dentro del archivo que comienzan (un índice de Clases).
Para archivos pequeños, puede crear un índice de este tipo bajo demanda siempre que necesite una línea aleatoria. Para hacerlo de manera eficiente para archivos grandes, es necesario mantener el índice en forma persistente, tal vez en un archivo independiente.
Si las líneas tienden a ser más o menos de la misma longitud y no necesita una "aleatoriedad" perfecta, también podría seleccionar un desplazamiento de bytes aleatorios dentro del archivo y buscar el salto de línea más cercano.
Lo que quieres es un LineNumberReader
.
Puede utilizar el método setLineNumber()
para desplazarse a una posición aleatoria en el archivo.
LineNumberReader rdr; int numLines; Random r = new Random(); rdr.setLineNumber(r.nextInt(numLines)); String theLine = rdr.readLine();
Una respuesta pasada de moda: Si recuperas un nulo, solo recuerda el método
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;
Para obtener un número aleatorio, puede utilizar la clase Random
de java del paquete util.
Random rnd = new Random(); int nextRandomLineNumber = rnd.nextInt();
Consulte http://developer.android.com/reference/java/util/Random.html
- Google Analytics para Android v4 – La medición automática de la pantalla no funciona?
- Bintray: No se pueden cargar archivos: el grupo Maven, el artefacto o la versión definidos en el archivo pom no coinciden