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

Versión 1.2 :

Código:
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;

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

	public static void copyFile(File source) throws Exception {
		String strNewName = source.getParent() + "/MTL" +
			source.getName().substring(5, 10) + ".DAT";
		
		BufferedInputStream in = new BufferedInputStream(new FileInputStream(source));
		BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(strNewName));

		int i;
		while ((i = in.read()) != -1) {
			out.write(i);
		}

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

	private class nameFilter implements FileFilter {
		private String mask;

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

		public boolean accept(File file) {
			return file.getName().startsWith(mask);
		}
	}
}
Ok, con estas modificaciones compila en Sun Java 1.2 y GNU gcj.

Cita:
Tu crees que haya alguna otra forma de poder realizar esta función?
En lo personal siempre trato de postear respuestas directamente
relacionadas con la pregunta, para evitar conflictos, puesto que
si te dijera ... heeeey, por que haces eso ? mejor haz esto otro ! casi
siempre tiene una reacción negativa por ejemplo ... heeey... yo quiero
hacer esto y por eso lo estoy preguntando !

Pero ahora que lo mencionas, creo que no necesitas hacer un
programa para esto, te funcionaría mejor un script de "DOS" en
Windows y agregarlo a "Tareas programadas" o un script de "bash"
en Linux y agregarlo a los script's "Cron". (O utiliza un lenguaje de
programación script, como perl, python, tcl, etc, es mucho más fácil)

Pero eso mi amigo ... es otra historia.

Saludos,

Última edición por HackmanC; 02/03/2008 a las 23:31 Razón: edit