De antemano agradezco a todos aquellos que lean este mensaje y más profundamente aquellos que puedan responder.
Mi problema es el siguiente, el programa que coloco en la parte inferior hace un filtrado de archivos en este caso, devuelve todos los archivos que empiezan por "b0", y lo que he intentado sin éxito es que una vez filtrado el listado, por la clase findFIles guardemos el contenido de esos archivos en nuevos, es decir si el programa me muestra los archivos b0123.123, b0456.123, b0789,,,,,, el siguiente pasó sería extraer el contenido de cada uno de ellos y ponerlo en otros archivos por ejemplo el b0123.123 en el MTL0123.dat, el b0456 en MTL0456.el123, el b0789 en MTL0789.dat,,,,,,
Básicamente es poner esta linea en una variable findFiles(list[i], filter, output); para que pueda ser leía por FileInputStream fileInput = new FileInputStream(NOMBRE DE LA VARIABLE);
Realmente estoy desesperado, llevo dias intentando y toda la ayuda que me puedan proporcionar estaré muy, agradecido y espero algún día poder hacer algo por ustdes.
Un saludo
Código:
import java.io.*; public class dia { public static void findFiles(File file, FileFilter filter, PrintStream output) throws IOException { //Recoge todos los archivos del directorio que cumplan con la condición en la clase main if (file.isDirectory()) { File[] list = file.listFiles(); for (int i = list.length; --i>=0;) { findFiles(list[i], filter, output); } } else { if (filter.accept(file)) { output.println(file); try { // Se abre el fichero original para lectura FileInputStream fileInput = new FileInputStream(file.toString()); BufferedInputStream bufferedInput = new BufferedInputStream(fileInput); String str = fileInput.getName(); // Se abre el fichero donde se hará la copia FileOutputStream fileOutput = new FileOutputStream ("MTL" + str.substring(5,10) + ".DAT"); BufferedOutputStream bufferedOutput = new BufferedOutputStream(fileOutput); // Bucle para leer de un fichero y escribir en el otro. byte [] array = new byte[10000]; int leidos = bufferedInput.read(array); while (leidos > 0) { bufferedOutput.write(array,0,leidos); leidos=bufferedInput.read(array); } // Cierre de los archivo bufferedInput.close(); bufferedOutput.close(); } catch (Exception e) { e.printStackTrace(); } } } } public static void main(String[] args) { class NameFilter implements FileFilter { private String mask; NameFilter(String mask) { this.mask = mask; } public boolean accept(File file) { return (file.getName().indexOf(mask)!=-1)?true:false; } } File pathFile = new File("."); String filterString = "b0"; //Hacemos un contador de tiempo que repite la función cada 10 segundos try { while (true) { FileFilter filter = new NameFilter(filterString); findFiles(pathFile, filter, System.out); try { Thread.sleep(10000); } catch (InterruptedException e) {} } } catch(Exception e) { e.printStackTrace(); } } }