Ver Mensaje Individual
  #8 (permalink)  
Antiguo 03/03/2008, 20:55
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 17 años
Puntos: 260
Información Re: Problemas con un listado en java

Mmmm.... ok

Código:
    /**
     * Copia un fichero con un nuevo nombre
     * @param source fichero origen
     * @throws java.lang.Exception si ocurre un error de lectura o escritura
     */
    public static void copyFile(File source) throws Exception {
        String strNewName = source.getParent() + "/MTL" +
                source.getName().substring(5, 10) + ".DAT";

        /**
         * BufferedInputStream/BufferedOutputStream :  para caracteres
         * BufferedReader/BufferedWriter : para strings
         */
        BufferedReader in = new BufferedReader(new FileReader(source));
        BufferedWriter out = new BufferedWriter(new FileWriter(strNewName));

        /**
         * Lee una linea por adelantado y la descarta.
         */
        String s = in.readLine();
        if (s != null) {
            while ((s = in.readLine()) != null) {
                /**
                 * Da formato a la linea leida y la escribe en la salida.
                 */
                out.write(plstbuilder(s));
            }
        }

        out.close();
        in.close();
    }
Una aplicación de ejemplo:

Código:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileFilter;
import java.io.FileReader;
import java.io.FileWriter;

public class Ejemplo extends Thread {

    private boolean running = true;

    public Ejemplo() {
    }

    public void run() {
        String strFilter = "b0";
        String strFile = "/home/hackmanc/Desktop";

        while (running) {
            nameFilter filter = new nameFilter(strFilter);
            findFiles(new File(strFile), filter);
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                running = false;
            }
        }
    }

    public static void main(String[] args) {
        new Ejemplo().start();
    }

    /**
     * Recoge todos los archivos del directorio que cumplan con la condición
     * @param file archivo inicial recursivo
     * @param filter filtro de nombres de archivo
     */
    public static void findFiles(File file, FileFilter filter) {
        if (file.isDirectory()) {
            File[] list = file.listFiles(filter);
            for (int i = 0; i < list.length; i++) {
                findFiles(list[i], filter);
            }
        } else {
            try {
                copyFile(file);
                file.delete(); // BORRA EL ARCHIVO O INTENTA BORRARLO
                System.out.println("Copiado exitósamente : " + file.getPath());
            } catch (Exception e) {
                System.out.println("Error en copia : " + file.getPath());
            }
        }
    }

    /**
     * Copia un fichero con un nuevo nombre
     * @param source fichero origen
     * @throws java.lang.Exception si ocurre un error de lectura o escritura
     */
    public static void copyFile(File source) throws Exception {
        String strNewName = source.getParent() + "/MTL" +
                source.getName().substring(5, 10) + ".DAT";

        /**
         * BufferedInputStream/BufferedOutputStream :  para caracteres
         * BufferedReader/BufferedWriter : para strings
         */
        BufferedReader in = new BufferedReader(new FileReader(source));
        BufferedWriter out = new BufferedWriter(new FileWriter(strNewName));

        /**
         * Lee una linea por adelantado y la descarta.
         */
        String s = in.readLine();
        if (s != null) {
            while ((s = in.readLine()) != null) {
                /**
                 * Da formato a la linea leida y la escribe en la salida.
                 */
                out.write(plstbuilder(s));
            }
        }

        out.close();
        in.close();
    }

    /**
     * Da formato a str
     * @param str la cadena a dar formato
     * @return la cadena original con un nuevo formato
     */
    public static String plstbuilder(String str) {
        String plstrow = null;
        String plu, depto, precio, tipo, t, cad, desc, walo;

        plu = str.substring(12, 16);
        depto = str.substring(17, 20);
        precio = str.substring(33, 39);
        t = str.substring(39, 46);

        if (t.equals("0000000")) {
            tipo = "0";
        } else {
            tipo = "1";
        }

        cad = str.substring(54, 55);
        desc = str.substring(174, 192);
        walo = "0";

        plstrow = plu + depto + walo + tipo + cad + desc + precio;

        return plstrow;
    }

    private class nameFilter implements FileFilter {

        private String mask;

        nameFilter(String mask) {
            this.mask = mask;
        }

        public boolean accept(File file) {
            return file.getName().startsWith(mask);
        }
    }
}
Cita:
Por principio de cuentas quisiera agregar que no utilizó ninguna herramienta grafica para programar como el netbeans o eclipse, lo hago todo con el notepad.
Sabias que son gratis ?

Saludos,

Última edición por HackmanC; 03/03/2008 a las 20:57 Razón: delete()