Tengo que leer un archivo de texto grande de, digamos, 25 GB y necesito procesar este archivo en 15-20 minutos. Este archivo tendrá múltiples secciones de encabezado y pie de página.Lectura y procesamiento de archivo de texto grande de 25GB
Intenté CSplit para dividir este archivo basado en el encabezado, pero está tardando alrededor de 24 a 25 minutos para dividirlo en varios archivos basados en el encabezado, lo cual no es aceptable en absoluto.
Me trataron de lectura y escritura secuencial mediante el uso de BufferReader
y BufferWiter
junto con FileReader
y FileWriter
. Tarda más de 27 min. Nuevamente, no es aceptable.
Intenté otro enfoque como obtener el índice de inicio de cada encabezado y luego ejecutar varios subprocesos para leer el archivo desde una ubicación específica usando RandomAccessFile
. Pero no hay suerte en esto.
¿Cómo puedo lograr mi requisito?
duplicado Posible de:
NIO tiene sus propios límites desagradables diseñados en el mismo: puede asignar 2 GB en el mejor de los casos como un búfer, ya que la API de búfer utiliza un int para todas las compensaciones. Esto hace que nio sea engorroso en el mejor de los casos para archivos grandes. – Durandal