Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/03/2008, 22:40
oscarmoal
 
Fecha de Ingreso: marzo-2008
Mensajes: 63
Antigüedad: 17 años, 1 mes
Puntos: 0
Problemas con un listado en java

Hola a todos!

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();
      }   
   }
}