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?

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

  • Cómo quitar el diseño de fragmento en el inicio de la creación de una nueva aplicación en ADT?
  • Android Error Clase ref en clase pre-verificada resuelta a implementación inesperada
  • Volley NetworkImageView - cómo reciclar mapas de bits?
  • ¿Cómo utilizar otro servicio de reconocimiento de voz en mi dispositivo Nexus 5?
  • Cómo hacer que la actividad de fondo sea más pequeña al abrir el cajón de navegación?
  • Calcular la distancia real recorrida por el móvil
  • Firebase "Falta un constructor sin argumentos"
  • USB bulkTransfer entre la tableta Android y la cámara
  • Casting y Generics, ¿Alguna diferencia de rendimiento?
  • La aplicación de Android no aparece en el emulador
  • ¿Cómo eliminar el certificado instalado por el usuario mediante programación?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.