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

Espero que sea de ayuda...

btw... que lea un int a la vez no es problema puesto que de hacer el "buffer" se encarga "Buffered__Stream",

Código:
	public static void copyFile(File source) throws Exception {
		BufferedInputStream in = new BufferedInputStream(new FileInputStream(source));
		BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(source.getPath() + ".bak"));

		int i;
		while ((i = in.read()) != -1) {
			out.write(i);
		}
		
		out.close();
		in.close();
	}
Y una aplicación basada en tu código donde hice pruebas...

Código:
package org.ejemplo;

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/";
		
		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()) {
			for (File f : file.listFiles(filter)) {
				findFiles(f, 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 = String.format("%1s/MTL%2$s.DAT",
				source.getParent(), source.getName().substring(5, 10));
		
		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);
		}
	}
}
Saludos,

Última edición por HackmanC; 02/03/2008 a las 01:10 Razón: buffer + edit ....