miércoles, abril 27, 2011

Creacion De Archivos I (Archivos para Batch)

Algunas veces nos hemos visto obligados a crear archivos con informacion provenientemente de nuestra bd, para enviarlo a otro sistema el cual procesara esa informacion normalmente cargando la informacion en otra bd, esto es muy comun entre los bancos

los bancos o para los bancos se crean archivos con los clientes y sus pagos o sus cargos, estos se envian y procesan para realizar los cargos sobre nuestras tdc o tdd (Domiciliacion)

estos archivos tienen ciertas caracteristicas como: alinear los nombres a la derecha, rellenar de espacios un texto, longitudes fijas, rellenar con caracteres un texto, colocar encabesados etc...


A continuacion veremos algunas formas de realizar estos benditos archivos


1.- supongamos una clase que se dedicara a crear un archivo y escribir sobre el.


public class Escritura {
    String ruta;
    String archivo;
    private FileWriter fichero;
    private PrintWriter pw;

    public void abrirArchivo() {
        try {
            fichero = new FileWriter(ruta + File.separator + archivo);
            pw = new PrintWriter(fichero);
        } catch (IOException e) {
            System.out.println("Error al abrir archivo");
        }
    }

    public void cerrarArchivo() {

        try {
            if (fichero != null) {
                fichero.close();
            }
        } catch (IOException e) {
            System.out.println("error al cerrar archivo");
        }
    }

    public void escribir(String texto) {
        if (fichero != null) {
            pw.println(texto);
        }else{
            System.out.println("El archivo no esta abierto");
        }
    }

}

2.- supongamos ahora una clase en la cual tendremos los datos que contendra el archivo a crear

class Bean{
   
    private String nombre;
    private String apellido;
    private String edad;
    private String telefono;


 // con sus metodos get y set



3.-  nos encontramos ahora un detalle, ese bean se tendra que escribir sobre un archivo, pero nuestra clase de escritura escribe String, por tanto tenemos que agrupar nuestros 4 datos en una sola variable que sera la que se escriba


public String toString(){
        return nombre + apellido + edad + telefono;
    }


4.- ahora tenemos algunas restricciones para crear nuestro archivo

- El nombre tiene que ser maximo de 10 caracteres, si es menor a 10, se llenaran las posiciones restantes con espacios
- El apellido tiene que ser maximo 20 caracteres, si es menor a 20, se llenaran las posiciones restantes con espacions
- La edad es maximo 2 caracteres, si la edad es menor a 10, se pondra un 0 a la izquierda: 8 años > 08
- El telefono es maximo 8 caracteres, rellenado con espacios

5.- para cumplir nuestras condiciones, modifiquemos nuestros metodos set 

public void setNombre(String nombre) {
        if(nombre==null){
            nombre = "          ";
        }
        else if(nombre.length()<10){
            do{
                nombre = nombre.concat(" ");
            }while(nombre.length()<=10);
        }else if(nombre.length()>10){
            nombre = nombre.substring(0,10);
        }
        this.nombre = nombre;
    }
    public void setApellido(String apellido) {
        if(apellido==null){
            apellido = "                    ";
        }
        else if(apellido.length()<20){
            do{
                apellido = apellido.concat(" ");
            }while(apellido.length()<=20);
        }else if(apellido.length()>20){
            apellido = apellido.substring(0,20);
        }       
        this.apellido = apellido;
    }
    public void setEdad(String edad) {
        if(edad==null){
            edad = "  ";
        }else if(edad.length()<2){
            edad = "0"+edad;
        }else if(edad.length()>2){
            edad = edad.substring(0,2);
        }           
        this.edad = edad;
    }
    public void setTelefono(String telefono) {
        if(telefono==null){
            telefono = "        ";
        }
        else if(telefono.length()<8){
            do{
                telefono = telefono.concat(" ");
            }while(telefono.length()<=8);
        }else if(telefono.length()>8){
            telefono = telefono.substring(0,8);
        }       
        this.telefono = telefono;
    }


NOTA: QUE TREMENDO CHOROTE NO ???? ( YA VEREMOS FORMAS SUPER SENSILLAS DE REALIZAR ESTO) 

6.- hay que crear una clase con su main, hacer instancia de las 2 clases anteriores, darles valores a sus variables 

public static void main(String args[]){
        Bean miBean = new Bean();
        Escritura miEscritura = new Escritura();
      
        miBean.setNombre("Ing. Fher");
        miBean.setApellido("Java - Limos . Blogspot");
        miBean.setEdad("23");
        miBean.setTelefono("12345678");
      
        miEscritura.archivo="JavaLimos.txt";
        miEscritura.ruta="D:";
      
        miEscritura.abrirArchivo();
        miEscritura.escribir(miBean.toString());
        miEscritura.cerrarArchivo();
    }


7.- al mandar escribir, llamamos al metodo toString que sobreescribimos


al final nuestro archivo quedaria algo como


Ing. Fher  Java - Limos . Blogs2312345678

8.- si se dan cuenta,  Java - Limos . Blogspot rebaso los 20 caracteres y fue cortado a Java - Limos . Blogs


ESTO ES MUY UTIL, PERO SI LAS LONGITUDES CAMBIAN, OBIAMENTE TENEMOS QUE RECOMPILAR NUESTRO PROGRAMA :(

No hay comentarios:

Publicar un comentario