Foros del Web » Programación para mayores de 30 ;) » Java »

Cambiar formato

Estas en el tema de Cambiar formato en el foro de Java en Foros del Web. wenazzzzz compaz como hago para que en java me coja todos los archivos que estan en formato .txt en una carpeta llamada carpeta1 puede ser ...
  #1 (permalink)  
Antiguo 17/12/2008, 08:08
Avatar de lobo_php  
Fecha de Ingreso: noviembre-2007
Ubicación: Cali-Colombia
Mensajes: 1.869
Antigüedad: 17 años, 1 mes
Puntos: 75
Cambiar formato

wenazzzzz

compaz como hago para que en java me coja todos los archivos que estan en formato .txt en una carpeta llamada carpeta1 puede ser en C:/ y me la convierta a formato .CSV con separador de tabulacion o ","

me explique bien? alguien sabe?
__________________
Cabuntu.org - Difundiendo Software Libre en Cali, Colombia
Usuario Linux # 483175
  #2 (permalink)  
Antiguo 17/12/2008, 13:13
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 17 años
Puntos: 260
Sonrisa Respuesta: Cambiar formato

Hola,

Posiblemente te sea de ayuda, todavía tienes que revisarlo y adaptarlo exactamente a tus necesidades,

Código:
import java.io.*;

public class Ejemplo extends Thread {

    private boolean running = true;

    public Ejemplo() {
    }

    public void run() {
        String strFilter = "mask";
        String strFile = "c:\\carpeta1";

        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);
                // ** comentado ** file.delete();
                System.out.println("Copiado exitósamente : " + file.getPath());
            } catch (Exception e) {
                System.out.println("Error en copia : " + file.getPath());
            }
        }
    }

    /**
     * Convierte un fichero a XML, CSV, etc...
     * @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 = "C:\\salida\\" + source.getName() + ".CSV";

        BufferedReader in = new BufferedReader(new FileReader(source));
        BufferedWriter out = new BufferedWriter(new FileWriter(strNewName));

        String p = System.getProperty("line.separator");
        String s = in.readLine();
        if (s != null) {
            while ((s = in.readLine()) != null) {
                out.write(builder(s) + p);
            }
        }

        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 builder(String str) {
        String row = null;
		// ** convertir str en otra cosa
		row = "<xml>" + str + "</xml>";
        return row;
    }

    private class nameFilter implements FileFilter {

        private String mask;

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

        public boolean accept(File file) {
            if (file.getName().length() > 1) {
                return file.getName().startsWith(mask) &&
                        file.getName().endsWith("txt"));
            }
            return false;
        }
    }
}
Es una modificación a una aplicación que filtra el listado de archivos en un directorio (recursivamente) y los convierte en otra cosa, se repite cada 10000 ms. Aunque hace algo parecido a aplicaciones como 'tr', 'sed', 'awk'.

Saludos,

ps:

El post original ( http://www.forosdelweb.com/f45/probl...o-java-561986/ ).
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:52.