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.
- Inicie sesión o regístrese para enviar comentarios
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();
}
}
}
}
.
.