Leer lineas de un txt con tres estructuras diferentes

Buenas estimados, les cuento que estoy intentando leer las lineas de un txt que tiene tres estructuras diferentes, en realidad a mi solo me interesan las lineas en donde el Tipo de registro es 03, pero como aun estoy muy crudo en este lenguaje no se me ocurre como hacerlo, adjunto la estructura:

Tipo Documento Cuota Documento Monto
Largo 2 Largo 3 Largo 3 Largo 13 Largo 13

Saludos y desde ya agradecido por cualquier aporte.

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 Cid

Podrías leer con formato el

Podrías leer con formato el contenido del archivo mediante la clase Scanner, ya que tiene metodos como nextInt(), next(), nextLine(), nextFloat, etc ... para leer con formato solo tendrías que verificar el orden y si hay un siguiente elemento con otros métodos como hasNext(), hasNextLine, etc.

Intenta hacerlo y si algo falla vuelve a preguntar.

Puedes comenzar aquí y aca

Leer lineas de un txt con tres estructuras diferentes

Gracias esitmado, estoy en eso ahora, luego les comento.

Saludos.

ETL

Yo te recomiendo usar un ETL, no reinventen.

Leer lineas de un txt con tres estructuras diferentes

Hola estimado, finalmente lo estoy intentando con Substring, pero no me da .
Mi idea es que recorra la estructura según el "tipo" que equivale a los dos primeros caracteres de cada linea, y guarde dos datos ( Rut y dígito) de la estructura tipo 02 ( Esta estructura corresponde a los datos del cliente).
Luego pase a la estructura tipo 03 ( esta estructura corresponde a los documentos pendientes de cada cliente) , de acá me debe guardar TIPODOC ,DOC , CUOTA , MONTO, etc.. con todo esto , pretendo concatenar todos estos campos y armar un resulset para mostrarlo en alguna tabla, me podrías orientar mas en detalle?

Saludos y agradecido por tu aporte.

Adjunto lo que tengo:

package archivostxt;

import java.io.*;
//Archivo Devoluciones
public class Prueba {

public static void main(String[] args) {
File archivo = null;
FileReader fr = null;
BufferedReader br = null;
try {
archivo = new File("C:\\prueba\\output.txt");
fr = new FileReader(archivo);
br = new BufferedReader(fr);
String linea;
while ((linea = br.readLine()) != null) {

StringBuffer lineaCompleta = new StringBuffer();
lineaCompleta.append(linea);
// String str = lineaCompleta.toString();
//String TIPO = str.substring(0,2);

while (lineaCompleta.toString().length() < 610) {
lineaCompleta.append(" ");
}
String str = lineaCompleta.toString();
String TIPO = str.substring(0, 1);

if (!TIPO.substring(0, 1).equals("02")) {
// Viene de estructura 02
String RUT = str.substring(3, 12);
String DIGITO = str.substring(13, 14);
if (!TIPO.substring(0, 1).equals("02")) {
//Vienen de estructura 03
String TIPODOC = str.substring(3, 5);
String DOC = str.substring(6, 15);
String CUOTA = str.substring(16, 18);
String MONTO = str.substring(19, 31);
String PAGO = str.substring(32, 44);
String EMISION = str.substring(45, 52);
String DESCRIP = str.substring(53, 120);
String LIBRE1 = str.substring(173, 192);
String LIBRE2 = str.substring(193, 212);
String LIBRE3 = str.substring(213, 242);
String FILLERI = str.substring(243, 368);

System.out.println(RUT + " " + DIGITO + " " + TIPO + " " + TIPODOC + " " + DOC + " " + CUOTA + " " + MONTO + " " + PAGO + " " + EMISION + " " + DESCRIP + " " + LIBRE1 + " " + LIBRE2 + " " + LIBRE3 + " " + FILLERI);
}
}
}

} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (null != fr) {
fr.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
}

.

.