java: análisis de archivos de texto grandes

Necesito analizar un archivo de registro en tiempo de ejecución con Java.

Lo que necesito es poder tomar un archivo de texto grande y buscar una determinada cadena o expresión regular dentro de un cierto rango de líneas.

El rango en sí mismo se deduce mediante otra búsqueda.

Por ejemplo, quiero buscar la cadena "operation ended with failure"en el archivo, pero no todo el archivo, solo comenzando con la línea que dice "starting operation".

Por supuesto que puedo hacer esto con InputStreamlectura simple y de archivos, pero ¿hay una biblioteca o una herramienta que lo ayude a hacerlo de manera más conveniente?

Respuesta 1

Si el archivo es realmente enorme, entonces, en su caso, una buena solución escrita de Java o cualquier herramienta * nix será casi igualmente lenta (estará vinculada a IO). En tal caso, no evitará leer el archivo completo línea por línea ... Y en este caso, pocas líneas de código Java harían el trabajo ... Pero en lugar de una búsqueda única, pensaría en dividir el archivo en el momento de la generación, lo que podría ser mucho más eficiente. Puede redirigir el archivo de registro a otro programa / script (ya sea awk o python sería perfecto para él) y dividir el archivo en línea / cuando se genera en lugar de post-factum.

Respuesta: 2

Tengo una tabla con solo una columna. Es un Id. ¿Cómo puedo persistir con JPA? He intentado un entityManager.persist (nuevo OneColumnTable ()); y arroja una PersistenceException causada por: javax ....

Me gustaría usar un CircularFifoQueue con Spring ExecutorService. Lo siguiente no se compila, porque CircularFifoQueue no es del tipo BlockingQueue. Pero muestra lo que estoy tratando de lograr: int ...

Estoy tratando de hacer que mi programa lea las respuestas ingresadas en forma de cuestionario. Para este propósito planeo usar getComponents () para obtener los campos de respuesta que necesito (por ejemplo, campos de texto, radio ...

He estado tratando de escribir un programa java que use el método Runtime.getRuntime (). Exec () para usar la línea de comandos para ejecutar una instancia del programa "tesseract". Algunos antecedentes, Tesseract es un ...