Lectura y procesamiento de archivos planos

Hola!

Soy nuevo en Java y he realizado varios ejemplos que he visto en internet pero ahora quiero hacer lo siguiente:

Tengo un archivo .txt que esta conformado por encabezados, detalles y totales, la idea es leerlo y crear tantos encabezados, detalles y totales que el archivo principal contenga, les pongo el ejemplo de mi archivo

Enc0
Enc1
Enc2
Det1
Det2
Det3
Det1
Det2
Det3
Tot0
Enc0
Enc1
Enc2
Det1
Det2
Det3
Det1
Det2
Det3
Tot0
y así sucesivamente. Es decir que mi resultado serian dos archivos de uno, si me explico, si alguien me ayuda con esto se los agradecere infinitamente.

Saludos!!

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

formato

A ver si entendí: El formato del archivo es N encabezados, luego N detalles y luego un total, eso repetido N veces. Quieres separar el archivo en varios para que cada uno tenga solamente una iteración de N encabezados, N detalles, total. Entonces debe ser algo así:

1. Creas un BufferedReader a partir de un FileReader para leer del archivo de entrada.
2. Creas un contador para los archivos que vas a generar y necesitas una variable que sea un PrintStream envolviendo un FileOutputStream para el archivo de salida.

Luego tienes un ciclo donde vas leyendo cada linea del archivo de entrada, y en cada iteración haces esto:

1. Lees una línea del archivo de entrada. Si no se puede seguir leyendo porque ya llegaste al final, termina el ciclo.
2. Si no existe el archivo de salida (tu variable PrintStream es nula), incrementas el contador y creas un nuevo archivo de salida.
3. Escribes la línea al archivo de salida.
4. Analizas la línea: si es una de total (supongo que tendrá algun formato especial), cierras el archivo de salida y pones la variable tipo PrintStream como nula (y así en la siguiente iteración se creará un nuevo archivo).

Imagen de OscarPatoDF

Lectura y procesamiento de archivos

Efectivamente ezamudio eso es lo que quiero hacer, que bueno que me supe explicar, voy a empezar con lo que me dices y espero funcione, se oye bastante razonable falta que lo sepa plasmar.

muchas gracias y te mantengo informado de como me va.

Un ejemplo de la salida?

Un ejemplo de la salida?

Imagen de OscarPatoDF

Lectura y procesamiento de archivos planos

Hola OscarRyz, con gusto te doy un ejemplo de los archivos de salida y gracias por tu interes.

HD0
HD1
HD2
DT1
DT2
DT3
TO1
Este seria el primer archivo de salida
HD0
HD1
HD2
DT1
DT2
DT3
DT1
DT2
DT3
TO1
Este seria el segundo archivo de salida
HD0
HD1
HD2
DT1
DT2
DT3
TO1
Este seria el tercer archivo de salida y así sucesivamente hasta leer todo el archivo de entrada

Espero este un poco mas claro.

Ah vaya. Dejame ver si

Ah vaya. Dejame ver si entendí, por ejemplo si el archivo de entrada es:

 
Entonces la salida debería de ser:

Archivo 1:
 

Archivo 2:
 

Archivo 3:
 

Si eso es lo que estas diciendo entonces es extra fácil:

 

O sea:
- Lees el archivo linea por linea
- Lo vas a escribiendo a uno de salida
- Si encuentras el "total" quiere decir que tienes que cambiar de archivo.
- Cambias y repites hasta terminar.

¿Suena lógico?

¿Como determinar si encontraste un "total"? Depende de tu formato. Con el ejemplo que pones sería

 

Inténtalo y si te atoras nos avisas poniendo el segmento de código significativo y el mensaje de error.

Suerte!

Imagen de OscarPatoDF

Lectura y procesamiento de archivos planos

Ok que bueno que ya pude transmitir mi idea y que es facil de programar (ojala no les falle) lo estoy trabajando y si tengo algo mas en concreto ya sea para bien o para mal se los hago saber.

Muchas gracias a ambos!!